FPGA自學——存儲器模型
文章目錄
- FPGA自學——存儲器模型
- 一、IP核
- 二、ROM(read only memory)
- 三、ROM的IP核調用
- 四、RAM(random access memory)
- 五、RAM的IP核調用
- 總結
- 1.不同波形的使用的存儲器
- 2.塊與分布式的選擇
- 3.FPGA與模塊的容量資源計算
- 4.控制寫入的ena和wea的區別
- 5.下載手冊資源的方式
一、IP核
一)概念:是指芯片中具有獨立功能的電路模塊的成熟設計
二)常見IP核:
1.邏輯運算:與、或、非、異或等基本邏輯運算單元和復用器、循環位移器、三態緩存器和解碼器等相對復雜的邏輯運算模塊
2.數學運算:分為整數運算和浮點運算
整數運算:加法器、減法器、乘法器、除法器、比較器、計數器和絕對值計算器
浮點運算:浮點數加法器、浮點數減法器、浮點數乘法器、浮點數除法器、浮點數平方根計算器、浮點數指數計算器
3.存儲器IP:移位寄存器、觸發器、鎖存器的簡單的存儲器IP核和較為復雜ROM、RAM、FIFO和Flash存儲器等模塊
4.輸入/輸出IP核:時鐘控制器、鎖相環(PLL),低電壓差分信號(LVDS)、收發器、雙數據速率(DDR)I/O、訪問外部存儲器的DQ-DQS I/O,I/O緩存器
5.數字信號處理IP核:有限沖激響應濾波(FIR)編譯器,級聯積分梳狀(CIC)濾波器編譯器、數控振蕩器(NCO)編譯器以及快速傅里葉交換(FFT)等IP核,用于數字信號系統設計
6.數字通信IP核:RS碼編通器、循環冗余校驗(CRC)編譯器、8B/10B編/譯碼器、SONET/SDH物理層IP核
7.圖像處理IP核:2D FIR濾波器、2D中值濾波器、α混合器、視頻監視器、色度重采樣器、圖像裁剪器、視頻輸入和輸出模塊、測試模板生成器、視頻跟蹤系統模塊
8.芯片接口IP核:數字視頻廣播(DVB)的異步串行接口(AS1)、10/100/1000Mbps以太網接口、DDR和DDR2 SDRAM控制器、存儲器物理層訪問接口、PCI/PCI Expresso編譯器、Rapidlo和用于數字電視信號傳輸的串行數字接口(SDI)
9.設計調試IP核:ILA邏輯分析儀、串行和并行Flash加載器、系統內的源和探測模塊、虛擬JTAG
10.其他
三)應用示例
情況1: 某芯片,有500個寄存器,需要在上電的時候由FPGA向這些寄存器中寫入初始值,初始值通過相應的文檔給出來了具體值,這些值都是已知的
特點: 數據量較多; 數值已知固定;上電工作(一次);只需要讀取
功能選用: ROM:只讀存儲器
情況2: 信號源(ADC)以1微妙一個的速率產生12位的數據現要求獲得連續1毫秒內的數據,通過串口以115200的波特率發送到電腦
特點: 數據量1000(總數有限); 數據內容未知;數據的使用速度低于數據的產生速度(速率不匹配);需要重復利用(位寬不同)
速度計算: 串口——以兩次六位的方式進行傳輸,每次傳輸的bit數((起始位+停止位)+6)bit = 8bit
? 每個bit傳輸的時間為1000_000_000ns/115200 ≈ 8680ns ,一組數據傳輸8680ns*8 = 69440ns = 69.4微妙
? 數據源——1微妙產生兩組數據,一組數據的產生 = 0.5微妙
存在問題: 數據生產(12)和消耗(6)的位寬不同——需要重復利用
功能選用: RAM:可讀可寫
二、ROM(read only memory)
定義:只讀存儲器
特點:非易失性,斷電后數據不會丟失
應用:嵌入電腦主板或者做移動存儲介質,體積夠小,提供的容量可以比光盤核軟盤的大,速度也不慢
延展:
EPROM | Erasable Program ROM (可擦除編程ROM) | 紫外線光擦除 |
---|---|---|
EEPROM | Electric Erasable Program ROM (電可擦除編程ROM) | 一次擦除一個字節 |
FLASH | 按塊擦除 |
三、ROM的IP核調用
1.新建一個rom_test的工程文件
2.選擇對應的IP核,選擇塊存儲器生存器
3.配置相關參數
4.生成并加載rom的初始化文件
在【原創】Mif精靈/mif(coe)文件生成器 - 芯路恒資料與技術支持專區 - 芯路恒電子技術論壇 - Powered by Discuz!下載Mif_Make_V2.4_exe.zip文件,并壓縮打開使用
5.查看總結
6.生成
7.查看IP核相關的代碼
找到例化代碼
8.編寫測試文件
`timescale 1ns / 1psmodule rom_tb();reg clka;reg [9:0] addra;wire [9:0] douta;rom rom_inst0 (.clka(clka), // input wire clka.addra(addra), // input wire [9 : 0] addra.douta(douta) // output wire [9 : 0] douta
);//產生時鐘,以50MHz為準initial clka = 1;always #10 clka = ~clka;//也可以寫為clka = !clka;initial beginaddra = 100;#201;repeat(30000) begin //repeat循環addra = addra + 1'b1;#20;end#2000;$stop;end
endmodule
9.查看波形
數字波形,修改為十進制進行查看
模擬波形
四、RAM(random access memory)
一)介紹
定義:隨機存儲器,它可以隨時把數據寫入到任何一指定地址的存儲單元,也可以隨時從任一指定地址讀出數據,其讀寫速度由時鐘頻率決定,主要用來存放程序以及程序執行過程中產生的數據,運算結果等
種類:
五、RAM的IP核調用
1.創建一個ram_test的項目工程文件
2.選用block ram的IP核
3.設計數據流向模塊圖
4.根據數據流向模塊圖選擇配置
5.點擊生成即可
三)仿真測試
1.跟上面rom的步驟基本一致
2.仿真代碼實現
`timescale 1ns / 1nsmodule ram_tb();reg clka ;
reg ena ;
reg wea ;
reg [15 : 0] addra ;
reg [15 : 0] dina ;
reg clkb ;
reg enb ;
reg [15 : 0] addrb ;
wire [15 : 0] doutb ;ram ram_inst0 (.clka (clka), // input wire clka.ena (ena), // input wire ena.wea (wea), // input wire [0 : 0] wea.addra (addra), // input wire [15 : 0] addra.dina (dina), // input wire [15 : 0] dina.clkb (clkb), // input wire clkb.enb (enb), // input wire enb.addrb (addrb), // input wire [15 : 0] addrb.doutb (doutb) // output wire [15 : 0] doutb
);initial clka = 1;
always #10 clka = ~clka;
initial clkb = 1;
always #15 clkb = ~clkb;initial begin//初始化ena = 0 ;wea = 0 ;addra = 0 ;dina = 0 ;enb = 0 ;addrb = 0 ;//寫入#201repeat(65536) beginena = 1;wea = 1;#20;addra = addra + 1'b1;dina = dina + 1'b1;endena = 0;wea = 0;#2000;//讀出addrb = 65536;#300repeat (65535) beginenb = 1;#30 addrb = addrb - 1'b1;end#2000$stop;
endendmodule
3.仿真結果
總結
1.不同波形的使用的存儲器
2.塊與分布式的選擇
區別 | distributed(分布式) | block(塊式) |
---|---|---|
資源 | LUT(查找表——本質是很小的ram) | Block Memory(嵌入式的硬件RAM) |
調用方式 | 需要多少拿多少 | 成塊拿取 |
用戶需求 | 需求小,選用分布式 | 需求大,選用塊式 |
3.FPGA與模塊的容量資源計算
以TFT屏幕為例:
**計算FPGA的最大容量:**RGB565 -> 需要16位寬 -> 選取的配置為16K×2 -> xc7z015-2(blocl ram有95)-> 計算最大容量:16K×95 = 190K
**TFT模塊:**RGB565 -> 需要16位寬 -> 屏幕大小800×480 =384K -> 需要容量 = 384K × 16 =
**資源不足時解決方法:**選擇部分屏幕進行顯示
4.控制寫入的ena和wea的區別
區別 | ena | wea |
---|---|---|
名稱 | Enable的縮寫 | Write Enable A的縮寫 |
作用 | 控制RAM塊是否激活或工作 | 控制數據是否寫入到指定地址的RAM中 |
wea使用時要注意位寬給限定字節大小的整數倍,wea的位寬位數就是倍數
手冊wea的使用案例
5.下載手冊資源的方式
1.使用vivado自帶功能進行下載
2.查看文件
3.如果無法成功下載,或下載后的文件打不開,使用自動打開的官網入口
4.根據關鍵字進行搜索