一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>可編程邏輯>【ZYNQ Ultrascale+ MPSOC FPGA教程】第六章 FPGA片內(nèi)RAM讀寫測(cè)試實(shí)驗(yàn)

【ZYNQ Ultrascale+ MPSOC FPGA教程】第六章 FPGA片內(nèi)RAM讀寫測(cè)試實(shí)驗(yàn)

2021-03-15 | pdf | 340.8KB | 次下載 | 3積分

資料介紹

作者: ALINX
* 本原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處。

適用于板卡型號(hào):
AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

實(shí)驗(yàn)Vivado工程為“ram_test”。
RAM是FPGA中常用的基礎(chǔ)模塊,可廣泛用于緩存數(shù)據(jù)的情況,同樣它也是ROM,F(xiàn)IFO的基礎(chǔ)。本實(shí)驗(yàn)將為大家介紹如何使用FPGA內(nèi)部的RAM以及程序?qū)υ揜AM的數(shù)據(jù)讀寫操作。

1.實(shí)驗(yàn)原理
Xilinx在VIVADO里為我們已經(jīng)提供了RAM的IP核, 我們只需通過IP核例化一個(gè)RAM,根據(jù)RAM的讀寫時(shí)序來寫入和讀取RAM中存儲(chǔ)的數(shù)據(jù)。實(shí)驗(yàn)中會(huì)通過VIVADO集成的在線邏輯分析儀ila,我們可以觀察RAM的讀寫時(shí)序和從RAM中讀取的數(shù)據(jù)。

2.創(chuàng)建Vivado工程
在添加RAM IP之前先新建一個(gè)ram_test的工程, 然后在工程中添加RAM IP,方法如下:

2.1 點(diǎn)擊下圖中IP Catalog,在右側(cè)彈出的界面中搜索ram,找到Block Memory Generator,雙擊打開。

2.2 將Component Name改為ram_ip,在Basic欄目下,將Memory Type改為Simple Dual Prot RAM,也就是偽雙口RAM。一般來講"Simple Dual Port RAM"是最常用的,因?yàn)樗莾蓚€(gè)端口,輸入和輸出信號(hào)獨(dú)立。

2.3 切換到Port A Options欄目下,將RAM位寬Port A Width改為16,也就是數(shù)據(jù)寬度。將RAM深度Port A Depth改為512,深度指的是RAM里可以存放多少個(gè)數(shù)據(jù)。使能管腳Enable Port Type改為Always Enable。

2.4 切換到Port B Options欄目下,將RAM位寬Port B Width改為16,使能管腳Enable Port Type改為Always Enable,當(dāng)然也可以Use ENB Pin,相當(dāng)于讀使能信號(hào)。而Primitives Output Register取消勾選,其功能是在輸出數(shù)據(jù)加上寄存器,可以有效改善時(shí)序,但讀出的數(shù)據(jù)會(huì)落后地址兩個(gè)周期。很多情況下,不使能這項(xiàng)功能,保持?jǐn)?shù)據(jù)落后地址一個(gè)周期。

2.5 在Other Options欄目中,這里不像ROM那樣需要初始化RAM的數(shù)據(jù),我們可以在程序中寫入,所以配置默認(rèn)即可,直接點(diǎn)擊OK。

2.6 點(diǎn)擊“Generate”生成RAM IP。

3. RAM的端口定義和時(shí)序
Simple Dual Port RAM 模塊端口的說明如下:

RAM的數(shù)據(jù)寫入和讀出都是按時(shí)鐘的上升沿操作的,端口A數(shù)據(jù)寫入的時(shí)候需要置高wea信號(hào),同時(shí)提供地址和要寫入的數(shù)據(jù)。下圖為輸入寫入到RAM的時(shí)序圖。

而端口B是不能寫入數(shù)據(jù)的,只能從RAM中讀出數(shù)據(jù),只要提供地址就可以了,一般情況下可以在下一個(gè)周期采集到有效的數(shù)據(jù)。

RAM讀時(shí)序

4. 測(cè)試程序編寫

下面進(jìn)行RAM的測(cè)試程序的編寫,由于測(cè)試RAM的功能,我們向RAM的端口A寫入一串連續(xù)的數(shù)據(jù),只寫一次,并從端口B中讀出,使用邏輯分析儀查看數(shù)據(jù)。代碼如下

`timescale1ns/1ps
//////////////////////////////////////////////////////////////////////////////////
module ram_test(
			input clk,			//25MHz時(shí)鐘
			input rst_n		//復(fù)位信號(hào),低電平有效	
		);

//-----------------------------------------------------------
reg		[8:0]		w_addr;			//RAM PORTA寫地址
reg		[15:0]		w_data;			//RAM PORTA寫數(shù)據(jù)
reg			wea;		//RAM PORTA使能
reg		[8:0]		r_addr;			//RAM PORTB讀地址
wire	[15:0]		r_data;			//RAM PORTB讀數(shù)據(jù)

//產(chǎn)生RAM PORTB讀地址
always@(posedge clk ornegedge rst_n)
begin
if(!rst_n)
	r_addr <=9'd0;
elseif(|w_addr)			//w_addr位或,不等于0
    r_addr <= r_addr+1'b1;
else
	r_addr <=9'd0;	
end

//產(chǎn)生RAM PORTA寫使能信號(hào)
always@(posedge clk ornegedge rst_n)
begin	
if(!rst_n)
	  wea <=#11'b0;
else
begin
if(&w_addr)//w_addr的bit位全為1,共寫入512個(gè)數(shù)據(jù),寫入完成
        wea <=#11'b0;
else
        wea	<=#11'b1;//ram寫使能
end
end

//產(chǎn)生RAM PORTA寫入的地址及數(shù)據(jù)
always@(posedge clk ornegedge rst_n)
begin	
if(!rst_n)
begin
	  w_addr <=9'd0;
	  w_data <=16'd1;
end
else
begin
if(wea)	//ram寫使能有效
	begin
		if(&w_addr)//w_addr的bit位全為1,共寫入512個(gè)數(shù)據(jù),寫入完成
		begin
			w_addr <= w_addr ;//將地址和數(shù)據(jù)的值保持住,只寫一次RAM
			w_data <= w_data ;
		end
		else
		begin
			w_addr <= w_addr +1'b1;
			w_data <= w_data +1'b1;
		end
	end
end
end

//-----------------------------------------------------------
//實(shí)例化RAM	
ram_ip ram_ip_inst (
.clka      (clk          ),// input clka
.wea       (wea          ),// input [0 : 0] wea
.addra     (w_addr       ),// input [8 : 0] addra
.dina      (w_data       ),// input [15 : 0] dina
.clkb      (clk          ),// input clkb
.addrb     (r_addr       ),// input [8 : 0] addrb
.doutb     (r_data       )// output [15 : 0] doutb
);

//實(shí)例化ila邏輯分析儀
ila_0 ila_0_inst (
	.clk	(clk	),
	.probe0	(r_data	),
	.probe1	(r_addr	)
);

	
endmodule

為了能實(shí)時(shí)看到RAM中讀取的數(shù)據(jù)值,我們這里添加了ila工具來觀察RAM PORTB的數(shù)據(jù)信號(hào)和地址信號(hào)。關(guān)于如何生成ila大家請(qǐng)參考”PL的”Hello World”LED實(shí)驗(yàn)”。

程序結(jié)構(gòu)如下:

綁定引腳
##################Compress Bitstream############################
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]set_property PACKAGE_PIN AB11 [get_ports clk]set_property IOSTANDARD LVCMOS33 [get_ports clk]create_clock -period 40.000 -name clk -waveform {0.000 20.000} [get_ports clk]set_property PACKAGE_PIN AA13 [get_ports rst_n]set_property IOSTANDARD LVCMOS33 [get_ports rst_n]

5. 仿真

仿真方法參考”PL的”Hello World”LED實(shí)驗(yàn)”,仿真結(jié)果如下,從圖中可以看出地址1寫入的數(shù)據(jù)是0002,在下個(gè)周期,也就是時(shí)刻2,有效數(shù)據(jù)讀出。

6. 板上驗(yàn)證
生成bitstream,并下載bit文件到FPGA。接下來我們通過ila來觀察一下從RAM中讀出的數(shù)據(jù)是否為我們初始化的數(shù)據(jù)。

在Waveform的窗口設(shè)置r_addr地址為0作為觸發(fā)條件,我們可以看到r_addr在不斷的從0累加到1ff, 隨著r_addr的變化, r_data也在變化, r_data的數(shù)據(jù)正是我們寫入到RAM中的512個(gè)數(shù)據(jù),這里需要注意,r_addr出現(xiàn)新地址時(shí),r_data對(duì)應(yīng)的數(shù)據(jù)要延時(shí)兩個(gè)時(shí)鐘周期才會(huì)出現(xiàn),數(shù)據(jù)比地址出現(xiàn)晚兩個(gè)時(shí)鐘周期,與仿真結(jié)果一致。

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費(fèi)下載
  2. 0.00 MB  |  1491次下載  |  免費(fèi)
  3. 2單片機(jī)典型實(shí)例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實(shí)例詳細(xì)資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識(shí)別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關(guān)電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費(fèi)
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計(jì)
  14. 0.23 MB  |  4次下載  |  免費(fèi)
  15. 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
  16. 0.11 MB  |  4次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費(fèi)
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費(fèi)
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費(fèi)
  7. 4LabView 8.0 專業(yè)版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費(fèi)
  9. 5555集成電路應(yīng)用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費(fèi)
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費(fèi)
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費(fèi)
  15. 8開關(guān)電源設(shè)計(jì)實(shí)例指南
  16. 未知  |  21539次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537793次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191183次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138039次下載  |  免費(fèi)