国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗

這篇具有很好參考價值的文章主要介紹了ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

FPGA本身是SRAM架構(gòu)的,斷電之后程序就會消失,那么如何利用FPGA實現(xiàn)一個ROM呢,我們可以利用FPGA內(nèi)部的RAM資源實現(xiàn)ROM,但這不是真正意義上的ROM,而是每次上電都會把初始化的值先寫入RAM。Vivado軟件中提供了ROM的IP核 , 我們只需通過IP核例化一個ROM,根據(jù)ROM的讀時序來讀取ROM中存儲的數(shù)據(jù)。本實驗將介紹如何使用FPGA內(nèi)部的ROM以及程序?qū)υ揜OM的數(shù)據(jù)讀操作。該實驗與ZYNQ之FPGA 片內(nèi)RAM讀寫測試實驗操作類似,可以參考。


一、創(chuàng)建ROM初始化文件

對于ROM,我們需要提前準(zhǔn)備好數(shù)據(jù),這樣在FPGA 實際運(yùn)行時,就可以直接讀取這些ROM中預(yù)存好的數(shù)據(jù)了。Xilinx FPGA 的片內(nèi)ROM支持初始化數(shù)據(jù)配置,我們可以創(chuàng)建一個后綴名為“.coe”的ROM初始化文件。
首先創(chuàng)建一個名為rom_test的文件夾。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
然后在該文件夾下新建一個文本文檔,將其后綴名改為“.coe”,我這里給文件命名為rom_init.coe。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗rom_init.coe文件中的內(nèi)容如下。

//該代碼來自正點原子
MEMORY_INITIALIZATION_RADIX=16;        //表示ROM內(nèi)容的數(shù)據(jù)格式是16進(jìn)制
MEMORY_INITIALIZATION_VECTOR= 
11,
22,
33,
44,
55,
66,
77,
88,
99,
aa,
bb,
cc,
dd,
ee,
ff,
00,
a1,
a2,
a3,
a4,
a5,
a6,
a7,
a8,
b1,
b2,
b3,
b4,
b5,
b6,
b7,
b8;       //每個數(shù)據(jù)后面用逗號或者空格或者換行符隔開,最后一個數(shù)據(jù)后面加分號

ROM初始化文件的內(nèi)容格式比較簡單,其中,第1行為定義的數(shù)據(jù)格式,第3行到第34行是這個 32*8bit 大小ROM的初始化數(shù)據(jù),每行數(shù)字后面用逗號,最后一行數(shù)字結(jié)束時用分號。


二、添加ROM IP核

先新建一個名為rom_test的Vivado工程,具體的步驟可以參見:Vivado軟件的使用——以led的交替閃爍為例。
新工程到下圖所示的界面后點擊Finish即可完成工程的創(chuàng)建。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
接著在工程中添加ROM IP,步驟為依次按照下圖中的序號找到Block Memory Generator雙擊打開。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
在彈出的對話框中的Basic下修改Component Name為rom_ip,修改Memory Type為Single Port ROM。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
在Port A Options下按照下圖中的序號依次修改。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
把Primitives Output Register取消勾選,其功能是在輸出數(shù)據(jù)上加寄存器,這可以有效改善時序 ,但讀出的數(shù)據(jù)會落后地址兩個周期,因此在很多情況下,不用這項功能,保持讀出的數(shù)據(jù)落后地址一個周期即可。
在Other Options下勾選Load Init File,然后點擊Browse查找第一步中創(chuàng)建好的文件rom_init.coe。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
按照下圖中序號依次選擇到ROM的初始化文件。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
可以看到該文件已經(jīng)添加成功了,點擊OK即可。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
在彈出的對話框中點擊Generate就可以生成ROM IP。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗


三、編寫測試程序

ROM的程序設(shè)計非常簡單,在程序中我們只要每個時鐘改變ROM的地址,ROM就會輸出當(dāng)前地址的內(nèi)部存儲數(shù)據(jù) ,例化ILA,用于觀察地址和數(shù)據(jù)的變化。
新建名為rom_test的Verilog文件,依次按照下圖中標(biāo)注的序號進(jìn)行即可。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
在新建好的rom_test.v中寫入如下代碼。

//該代碼來自正點原子
`timescale 1ns / 1ps

module rom_test(
	input sys_clk,	//50MHz時鐘
	input rst_n		//復(fù)位,低電平有效
    );

wire [7:0] rom_data;	  //ROM讀出數(shù)據(jù)
reg	 [4:0] rom_addr;      //ROM輸入地址 

//產(chǎn)生ROM地址讀取數(shù)據(jù)
always @ (posedge sys_clk or negedge rst_n)
begin
    if(!rst_n)
        rom_addr <= 10'd0;
    else
        rom_addr <= rom_addr+1'b1;
end        
//實例化ROM
rom_ip rom_ip_inst
(
    .clka   (sys_clk),      //inoput clka
    .addra  (rom_addr),      //input [4:0] addra
    .douta  (rom_data)       //output [7:0] douta
);
//實例化邏輯分析儀
ila_0 ila_m0
(
    .clk    (sys_clk),
    .probe0 (rom_addr),
	.probe1 (rom_data)
);

endmodule

其中實例化ROM部分的代碼來自rom_ip中的rom_ip.veo文件,不過需要將括號內(nèi)的參數(shù)做一修改。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗


四、添加ILA

我們還需要添加ILA,其添加過程可參見:使用Vivado軟件進(jìn)行硬件調(diào)試。
探針的數(shù)量這里設(shè)置為2,即rom_addr和rom_data兩個探針。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
這里每個探針的位數(shù)按照代碼中的分配,rom_addr是5位,rom_data是8位。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
對應(yīng)的代碼如下。

wire [7:0] rom_data;	  //ROM讀出數(shù)據(jù)
reg	 [4:0] rom_addr;      //ROM輸入地址 

在彈出的對話框中點擊Generate即可。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
實例化ILA邏輯分析儀部分的代碼來自ila_0中的ila_0.veo文件,不過需要將括號內(nèi)的參數(shù)做一修改。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗


五、分配管腳

本實驗中需要分配管腳的只有時鐘信號clk(管腳為U18)和復(fù)位信號rst_n(管腳為N15),按照下圖中的數(shù)字順序即可完成管腳的分配。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
管腳分配完成后Ctrl+S保存,名稱與工程名保持一致。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
管腳分配的信息在rom_test.xdc文件中。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗


六、Simulator仿真

Simulator仿真創(chuàng)建文件的過程可參見:Vivado中Simulator仿真軟件的使用。
右擊Simulation Sources選擇Add Source按照下圖中序號依次新建TB文件。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
在tb_rom_test.v文件中寫入如下代碼。

//該代碼來自正點原子
`timescale 1ns / 1ps

module vtf_rom_tb;
// Inputs
reg sys_clk;
reg rst_n;

// Instantiate the Unit Under Test (UUT)
rom_test uut (
	.sys_clk	(sys_clk), 		
	.rst_n		(rst_n)
);

initial 
begin
	// Initialize Inputs
	sys_clk = 0;
	rst_n = 0;

	// Wait 100 ns for global reset to finish
	#100;
      rst_n = 1;       

 end

always #10 sys_clk = ~ sys_clk;   //20ns一個周期,產(chǎn)生50MHz時鐘源
   
endmodule

保存代碼后選擇SIMULATION下的Run Simulation,選擇第一個行為仿真。
將所有代碼中定義的信號拖入到波形仿真窗口,設(shè)置仿真時間為1000ns,運(yùn)行后結(jié)果如下圖所示。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
由上圖可知,該仿真結(jié)果與RAM讀取數(shù)據(jù)一樣,數(shù)據(jù)滯后于地址一個周期。


七、硬件調(diào)試

連接開發(fā)板,點擊Generate Bitstream生成比特流文件,并將其下載到開發(fā)板上。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
下載后彈出如下窗口,設(shè)置rom_addr的初始數(shù)值為00,然后點擊運(yùn)行按鈕,得到如下波形,將游標(biāo)移動到紅線所在位置并放大得到下圖。
ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗
由上圖可以知道,硬件調(diào)試的結(jié)果與仿真的結(jié)果一致。


總結(jié)

以上就是ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗的所有內(nèi)容了,該實驗過程與ZYNQ之FPGA 片內(nèi)RAM讀寫測試實驗非常相似,大的不同就是該實驗需要創(chuàng)建ROM初始化文件,然后在添加ROM IP核時選上該文件。
本文參考資料:正點原子–course_s1_ZYNQ那些事兒-FPGA實驗篇V1.06.pdf文章來源地址http://www.zghlxwxcb.cn/news/detail-466954.html

到了這里,關(guān)于ZYNQ之FPGA 片內(nèi)ROM讀寫測試實驗的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【正點原子FPGA連載】第三十一章DDR4讀寫測試實驗 摘自【正點原子】DFZU2EG/4EV MPSoC 之FPGA開發(fā)指南V1.0

    【正點原子FPGA連載】第三十一章DDR4讀寫測試實驗 摘自【正點原子】DFZU2EG/4EV MPSoC 之FPGA開發(fā)指南V1.0

    1)實驗平臺:正點原子MPSoC開發(fā)板 2)平臺購買地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套實驗源碼+手冊+視頻下載地址: http://www.openedv.com/thread-340252-1-1.html DDR4 SDRAM(Double-Data-Rate Fourth Generation Synchronous Dynamic Random Access Memory,簡稱為DDR4 SDRAM),是一種高速動態(tài)隨機(jī)

    2024年01月16日
    瀏覽(28)
  • FPGA原理與結(jié)構(gòu)——ROM IP的使用與測試

    FPGA原理與結(jié)構(gòu)——ROM IP的使用與測試

    系列文章目錄:FPGA原理與結(jié)構(gòu)(0)——目錄與傳送門 ????????本文介紹 Block Memory?Generator v8.4 IP核 實現(xiàn)ROM,在學(xué)習(xí)一個IP核的使用之前,首先需要對于IP核的具體參數(shù)和原理有一個基本的了解,具體可以參考: FPGA原理與結(jié)構(gòu)——塊RAM(Block RAM,BRAM) https://blog.csdn.net/appl

    2024年02月11日
    瀏覽(16)
  • ZYNQ學(xué)習(xí)筆記(四):PL與PS數(shù)據(jù)交互——基于BRAM IP 核的(PS端讀寫+PL端讀)控制實驗

    ZYNQ學(xué)習(xí)筆記(四):PL與PS數(shù)據(jù)交互——基于BRAM IP 核的(PS端讀寫+PL端讀)控制實驗

    說起PS、PL數(shù)據(jù)交互,常見的有IO方式:MIO EMIO GPIO,還有利用BRAM或FIFO等,在上一篇文章ZYNQ學(xué)習(xí)筆記(三):PL與PS數(shù)據(jù)交互—— UART串口+AXI GPIO控制DDS IP核輸出實驗咱們學(xué)會了如何利用AXI GPIO IP核來實現(xiàn)PS(寫)與PL(讀)的數(shù)據(jù)交互,那么這篇文章來學(xué)習(xí)如何使用BRAM~ 本次實驗

    2024年02月05日
    瀏覽(20)
  • 【正點原子FPGA連載】第十五章eMMC讀寫測試實驗 摘自【正點原子】DFZU2EG_4EV MPSoC之嵌入式Vitis開發(fā)指南

    【正點原子FPGA連載】第十五章eMMC讀寫測試實驗 摘自【正點原子】DFZU2EG_4EV MPSoC之嵌入式Vitis開發(fā)指南

    1)實驗平臺:正點原子MPSoC開發(fā)板 2)平臺購買地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套實驗源碼+手冊+視頻下載地址: http://www.openedv.com/thread-340252-1-1.html eMMC是一種嵌入式多媒體存儲卡,它具有存儲容量大、傳輸速度快、易于使用等優(yōu)點,主要應(yīng)用于對存儲容量有

    2024年02月06日
    瀏覽(17)
  • 基于紫光同創(chuàng) FPGA 的 DDR3 讀寫實驗

    基于紫光同創(chuàng) FPGA 的 DDR3 讀寫實驗

    此篇為專欄 《紫光同創(chuàng)FPGA開發(fā)筆記》 的第二篇,記錄我的學(xué)習(xí)FPGA的一些開發(fā)過程和心得感悟,剛接觸FPGA的朋友們可以先去此專欄置頂 《FPGA零基礎(chǔ)入門學(xué)習(xí)路線》來做最基礎(chǔ)的掃盲。 本篇內(nèi)容基于筆者實際開發(fā)過程和正點原子資料撰寫,將會詳細(xì)講解此 FPGA 實驗的全流程

    2024年01月20日
    瀏覽(33)
  • FPGA解碼MIPI視頻:Xilinx Zynq7000中端FPGA,基于MIPI CSI-2 RX Subsystem架構(gòu)實現(xiàn),提供工程源碼和技術(shù)支持

    FPGA解碼MIPI視頻:Xilinx Zynq7000中端FPGA,基于MIPI CSI-2 RX Subsystem架構(gòu)實現(xiàn),提供工程源碼和技術(shù)支持

    FPGA解碼MIPI視頻:Xilinx Zynq7000高端FPGA,基于MIPI CSI-2 RX Subsystem架構(gòu)實現(xiàn),提供工程源碼和技術(shù)支持 FPGA圖像采集領(lǐng)域目前協(xié)議最復(fù)雜、技術(shù)難度最高的應(yīng)該就是MIPI協(xié)議了,MIPI解碼難度之高,令無數(shù)英雄競折腰,以至于Xilinx官方不得不推出專用的IP核供開發(fā)者使用,不然太高端

    2024年02月22日
    瀏覽(38)
  • Quartus 平臺 FPGA 片內(nèi) RAM 使用

    Quartus 平臺 FPGA 片內(nèi) RAM 使用

    本文將以 Quartus 自帶的 RAM:2-PORT 為例,介紹 EP4CE6E22C8 On Chip Memory 的使用 位于 On Chip Memory 下有兩個 RAM IP 核 分別是單端口 RAM 和雙端口 RAM: 單端口RAM只有一組地址線,這組地址線控制著寫數(shù)據(jù)端口和讀數(shù)據(jù)端口, 而雙端口RAM具有兩組地址線,這兩組地址線分別控制著寫數(shù)據(jù)

    2024年02月03日
    瀏覽(37)
  • 【FPGA】MIG DDR3讀寫邏輯測試

    【FPGA】MIG DDR3讀寫邏輯測試

    ????????筆者在之前通過microblaze軟核的方式實現(xiàn)了DDR3芯片的讀寫測試,當(dāng)時對于Xilinx MIG DDR控制器的理解還比較膚淺。還是想通過控制用戶接口時序的方式來讀寫DDR,擴(kuò)展和加深自己對DDR的理解。 MIG IP核配置請看我的前一篇文章 【FPGA測試】Microblaze測試DDR讀寫_microblaze

    2024年01月22日
    瀏覽(27)
  • 【Quartus FPGA】EMIF DDR3 讀寫帶寬測試

    【Quartus FPGA】EMIF DDR3 讀寫帶寬測試

    在通信原理中,通信系統(tǒng)的有效性用帶寬來衡量,帶寬定義為每秒傳輸?shù)谋忍財?shù),單位 b/s,或 bps。在 DDR3 接口的產(chǎn)品設(shè)計中,DDR3 讀/寫帶寬是設(shè)計者必須考慮的指標(biāo)。本文主要介紹了 Quartus FPGA 平臺 EMIF 參數(shù)配置,以及測試?DDR3 讀寫帶寬的過程,F(xiàn)PGA 器件型號是 Cyclone 10 GX

    2024年02月13日
    瀏覽(18)
  • Vivado 下 IP核 之ROM 讀寫

    Vivado 下 IP核 之ROM 讀寫

    目錄 Vivado 下 IP核 之ROM 讀寫 1、實驗簡介 2、ROM IP 核簡介 3、ROM IP 核配置 3.1、創(chuàng)建 ROM 初始化文件 3.2、單端口 ROM 的配置 加載數(shù)據(jù)文件,將 .coe 文件保存到生成的 Rom IP 核中 3.3、雙端口 ROM 的配置 3.4、ROM IP 核的調(diào)用 (1)ROM 頂層模塊代碼 (2)ROM IP 核仿真 (3)仿真結(jié)果 4、

    2024年02月05日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包