隨機訪問儲存器(random access memory,ram)又稱作「隨機儲存器」,是與cpu直接交換資料的內部儲存器,也叫主存(記憶體)。它可以隨時讀寫,而且速度很快,通常作為作業系統或其他正在執行中的程式的臨時資料儲存媒介。
儲存單元的內容可按需隨意取出或存入,且訪問的速度與儲存單元的位置無關的儲存器。這種儲存器在斷電時將丟失其儲存內容,故主要用於儲存短時間使用的程式。 按照儲存單元的工作原理,隨機儲存器又分為靜態隨機儲存器(英文:static ram,sram)和動態隨機儲存器(英文dynamic ram,dram)。
這裡直接呼叫ip核進行測試
選擇單口的ram進行寫資料操作,並通過波形分析chipscope進行資料的核對
話不多說直接貼**:
module top(ext_clk_25m,ext_rst_n,ram_rddb
);input ext_clk_25m;
input ext_rst_n;
output[7:0] ram_rddb;
ram_controller uut_ram_controller(
.clk(ext_clk_25m),
.rst_n(ext_rst_n),
.ram_rddb(ram_rddb)
);endmodule
module ram_controller(clk,rst_n,ram_rddb
);input clk;
input rst_n;
output [7:0] ram_rddb;
reg [4:0]ram_addr;//ram位址
reg [7:0]ram_wrdb;//ram寫入資料
reg ram_wren;//寫入使能
reg[9:0] cnt;
always@(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
cnt<=1'b0;
endelse begin
cnt<=cnt+1'b1;
endend
always@(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
ram_wren<=1'b0;
ram_wrdb<=1'b0;
ram_addr<=1'b0;
endelse if((cnt>10'd0)&&(cnt<10'd33))begin
ram_wren<=1'b1;
ram_wrdb<=ram_wrdb+1'b1;
ram_addr<=ram_addr+1'b1;
endelse if((cnt>10'd0)&&(cnt<10'd33))begin
ram_wren<=1'b1;
ram_wrdb<=1'd0;
ram_addr<=ram_addr+1'b1;
endelse begin
ram_wren<=1'b0;
ram_wrdb<=1'b0;
ram_addr<=1'b0;
endend
my_ram your_instance_name (
.clka(clk), // input clka
.wea(ram_wren), // input [0 : 0] wea
.addra(ram_addr), // input [4 : 0] addra
.dina(ram_wrdb), // input [7 : 0] dina
.douta(ram_rddb) // output [7 : 0] douta
);endmodule
如果使用波形分析儀的話需要新建cdc檔案
配置檔案的方法我博文中有講到
寫博文的時候不小心把波形分析儀關閉了就不跟截圖了over
利用virtualbox的虛擬串列埠除錯核心
2012 04 04 23 44 00 標籤 分類 linux sunvirtualbox的串列埠功能提供的很是強大,即便你的主機沒有串列埠,你依然可以利用兩個virtualbox的虛擬機器來除錯你的核心.步驟1,除錯機將串列埠設定成host pipe,然後選中建立,名字取為類似這樣的東西 wind...
Vivado PLL IP核的使用
當我們需要用到分頻或者倍頻的時候,就需要使用vivado中的 pll ip核來獲得我們想要的時鐘頻率。下面簡單說明一下如何配置pll ip核。1 查詢 pll ip核 2 指定用於分頻的輸入頻率 3 設定輸出頻率 相位以及占空比 4 設定locked訊號的名字 locked訊號是用來觀察pll輸出時...
GDB除錯精粹及使用例項
gdb除錯精粹及使用例項 一 列檔案清單 1 list gdb list line1,line2 二 執行程式 要想執行準備除錯的程式,可使用run命令,在它後面可以跟隨發給該程式的任何引數,包括標準輸入和標準輸出說明符 和外殼萬用字元 在內。如果你使用不帶引數的run命令,gdb就再次使用你給予前...