0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA學習系列:16. rom控制器設計

FPGA學習交流 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-06-13 11:21 ? 次閱讀

設計背景:

ROM是只讀存儲器(Read-Only Memory)的簡稱,是一種只能讀出事先所存數(shù)據(jù)的固態(tài)半導體存儲器。其特性是一旦儲存資料就無法再將之改變或刪除。通常用在不需經(jīng)常變更資料的電子電腦系統(tǒng)中,并且資料不會因為電源關閉而消失。

ROM是由英文Read only Memory的首字母構成的,意為只讀存儲器。顧名思義,就是這樣的存儲器只能讀,不能像RAM一樣可以隨時讀和寫。它只允許在生產(chǎn)出來之后有一次寫的機會,數(shù)據(jù)一旦寫入則不可更改。它另外一個特點是存儲器掉電后里面的數(shù)據(jù)不丟失,可以存放成百上千年。此類存儲器多用來存放固件,比如計算機啟動的引導程序,手機、MP3、MP4、數(shù)碼相機等一些電子產(chǎn)品的相應的程序代碼。

設計原理:

我們的設計是讀ROM的數(shù)據(jù),然后讀到最后一個數(shù)據(jù)的時候,然后又從最后的地址往回讀數(shù)據(jù),來實現(xiàn)循環(huán)讀數(shù)。

首先我們先創(chuàng)建一個.mif文件,然后給對應的地址中寫如數(shù)據(jù),然后設計一個IP核,之后通過讀ROM的地址,來讀出ROM中存在的數(shù)據(jù),具體的操作如下面的操作。

下一步,建立一個深度256,位寬為8的 .mif。

然后在第一個地址右鍵。

填寫開始地址以及結束地址,我們給每一位的地址位寫上和地址一樣的數(shù)據(jù),那么就是數(shù)據(jù)從0開始,步進為1,如下,然后然后完成,保存。

這樣我們寫好我們.mif文件,然后進行下面的步驟。

選擇我們所選的硬件描述語言,我們都是verilog HDL,然后選擇我們文件生成的路徑,下一步。

設置我們的輸出的位寬,和深度,我們的深度256,位寬8,下一步。

去掉輸出是否有寄存器的對勾,如果選了輸出會晚一拍,因為加了一個輸出寄存器。

然后出現(xiàn)下面的界面,點擊,選擇我們生成的.mif文件,添加進來,然后下一步,下一步完成。

設計架構圖:

設計代碼:

頂層模塊

0modulerom(clk,rst_n,data);

1 inputclk;

2 inputrst_n;

3

4 output[7:0]data;

5

6 wire[7:0]address;

7

8 rom_r rom_r ( //例化ROM控制器模塊

9 .clk(clk),

10 .rst_n(rst_n),

11 .address(address)

12 );

13

14 my_rom my_rom_inst (//例化IP核模塊

15 .address (address ),

16 .clock (clk ),

17 .q (data )

18 );

19

20endmodule

設計模塊

0modulerom_r(clk,rst_n,address);

1

2 inputclk;

3 inputrst_n;

4

5 outputreg[7:0]address;

6

7 reg[1:0]state;

8 always@(posedgeclk ornegedgerst_n)

9 if(!rst_n)

10 begin

11 address <=?1'b0;

12 state <=?1'b0;

13 end

14 else

15 begin

16 case(state)

17 0:begin

18 if(address

19 begin

20 address <=?address +?1'b1;?//地址激增

21 end

22 else

23 begin

24 if(address ==255)//判斷是否讀完

25 begin

26 address <=?address -?1'b1;?

27 state <=?1;

28 end

29

30 end

31 end

32 1:begin

33 if(address >0)//讀完就跳轉一狀態(tài)后讓地址減1

34 begin

35 address <=?address -?1'b1;

36 end

37 else

38 begin

39 address <=?address +?1'b1;

40 state <=?0;

41 end

42 end

43 default:state <=?0;

44 endcase

45 end

46endmodule

測試模塊

0`timescale1ns/1ps

1

2modulerom_tb();

3

4 regclk;

5 regrst_n;

6

7 wire[7:0]data;

8

9 initialbegin

10 clk =1'b1;

11 rst_n =1'b0;

12

13 #100.1rst_n =1'b1;

14

15 #20000$stop;//20000NS后停止仿真

16

17 end

18

19 always#10clk =~clk;//產(chǎn)生50M時鐘

20

21 rom rom_dut ( //例化頂層模塊

22 .clk(clk),

23 .rst_n(rst_n),

24 .data(data)

25 );

26endmodule

仿真圖:

仿真中我們可以看到和我們的設計一樣,我們先從0地址讀數(shù)據(jù),當讀到最后一個數(shù)后,然后返回來從最后一個地址開始讀數(shù)。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21796

    瀏覽量

    605523
收藏 人收藏

    評論

    相關推薦

    至芯昭哥帶你學FPGAFPGA_100天之旅_rom控制器的設計

    至芯昭哥帶你學FPGAFPGA_100天之旅_rom控制器的設計
    發(fā)表于 08-23 11:14

    FPGA零基礎學習:IP CORE 之 ROM設計

    系列將帶來FPGA的系統(tǒng)性學習,從最基本的數(shù)字電路基礎開始,最詳細操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息、通信類專業(yè)學生、初入職場小白及打算進階提升的職業(yè)開發(fā)者都可以有
    發(fā)表于 03-13 15:46

    基于DSP與FPGA的運動控制器研究

    設計了一種基于DSP與FPGA的運動控制器。該控制器以DSP為控制核心,用FPGA構建運動控制器
    發(fā)表于 10-26 15:21 ?93次下載

    基于FPGA的LCD控制器設計

    基于 FPGA的LCD控制器設計的論文。
    發(fā)表于 10-29 14:05 ?17次下載

    基于XILINX的XC3系列FPGA的VGA控制器的VHDL源程

    Xilinx FPGA工程例子源碼:基于XILINX的XC3系列FPGA的VGA控制器的VHDL源程序
    發(fā)表于 06-07 15:07 ?12次下載

    基于FPGA的LED屏控制器設計

    基于FPGA的LED屏控制器設計基于FPGA的LED屏控制器設計
    發(fā)表于 06-21 17:56 ?59次下載

    基于FPGA的VGA圖像控制器的設計與實現(xiàn)

    基于FPGA的VGA圖像控制器的設計與實現(xiàn)
    發(fā)表于 08-30 15:10 ?13次下載

    華清遠見FPGA代碼-交通燈控制器

    FPGA學習資料教程——華清遠見FPGA代碼-交通燈控制器
    發(fā)表于 10-27 18:07 ?28次下載

    高性能16位XA微控制器系列

      飛利浦半導體日前宣布推出高性能16位XA微控制器系列的新成員XA-C3,專門用于“控制器區(qū)域網(wǎng)路(CAN)”應用,如高性能工業(yè)和汽車系統(tǒng)。
    發(fā)表于 09-20 12:21 ?5次下載

    Virtex-7 FPGA系列的內存控制器介紹

    本視頻介紹了可用于構建7系列FPGA內存控制器的軟IP。 這些模塊討論了如何使用Xilinx存儲接口生成器構建存儲
    的頭像 發(fā)表于 11-22 06:05 ?4617次閱讀

    學習SDRAM控制器設計 能讓你掌握很多FPGA知識

    學習FPGA的過程中,注意是在學習過程中,聯(lián)系FPGA的使用技巧,強烈建議嘗試設計一個SDRAM控制器,不要使用IP核。
    發(fā)表于 02-15 15:04 ?873次閱讀

    NUC970工業(yè)控制系列控制器的數(shù)據(jù)手冊免費下載

    針對通用32位微控制器的NUC970系列嵌入了一個優(yōu)秀的CPU核心ARM926EJ-S,這是一個由Advanced RISC Machines Ltd.設計的RISC處理,運行頻率高達300
    發(fā)表于 08-10 08:00 ?14次下載
    NUC970工業(yè)<b class='flag-5'>控制</b><b class='flag-5'>系列</b>微<b class='flag-5'>控制器</b>的數(shù)據(jù)手冊免費下載

    實現(xiàn)基于FPGA的SPIFlash控制器設計

    實現(xiàn)基于FPGA的SPIFlash控制器設計(嵌入式開發(fā)工作怎么樣)-該文檔為實現(xiàn)基于FPGA的SPIFlash控制器設計簡介資料,講解的還不錯,感興趣的可以下載看看………………………
    發(fā)表于 07-30 09:10 ?5次下載
    實現(xiàn)基于<b class='flag-5'>FPGA</b>的SPIFlash<b class='flag-5'>控制器</b>設計

    AN5354_STM32H7系列控制器16位ADC的應用手冊

    AN5354_STM32H7系列控制器16位ADC的應用手冊
    發(fā)表于 11-21 08:11 ?4次下載
    AN5354_STM32H7<b class='flag-5'>系列</b>微<b class='flag-5'>控制器</b><b class='flag-5'>16</b>位ADC的應用手冊

    FPGA學習筆記:ROM IP核的使用方法

    了數(shù)據(jù)文件(.mif 或.hex 格式),在 FPGA 運行時通過數(shù)據(jù)文件給 ROM 模塊初始化,才使得 ROM 模塊 像 “真正”的掉電非易失存儲;也正是這個原因,
    的頭像 發(fā)表于 08-22 15:06 ?5280次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>學習</b>筆記:<b class='flag-5'>ROM</b> IP核的使用方法