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

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

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

3天內(nèi)不再提示

FPGA學(xué)習(xí)筆記:RAM IP核的使用方法

CHANBAEK ? 來(lái)源:小小研究生 ? 作者:xxyjs2020 ? 2023-08-29 16:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

理論學(xué)習(xí)

我們知道除了只讀存儲(chǔ)器外還有隨機(jī)存取存儲(chǔ)器,這一篇將介紹另一種 存儲(chǔ)類(lèi)IP核 ——RAM的使用方法。RAM是 隨機(jī)存取存儲(chǔ)器 (Random Access Memory),是一個(gè)易失性存儲(chǔ)器,斷電丟失。RAM工作時(shí)可以隨時(shí)從任何一個(gè)指定的地址寫(xiě)入或讀出數(shù)據(jù)。

同樣的,Altera推出的RAM IP核分為兩種類(lèi)型:?jiǎn)?a target="_blank">端口RAM和雙端口RAM。其中雙端口RAM又分為簡(jiǎn)單雙端口RAM(Simple dual port RAM)和真正雙端口RAM(True dual port RAM)。對(duì)于單端口RAM,讀寫(xiě)操作共用一組地址線,讀寫(xiě)操作不能同時(shí)進(jìn)行;對(duì)于簡(jiǎn)單雙端口RAM,讀操作和寫(xiě)操作有專(zhuān)用地址端口(一個(gè)讀端口和一個(gè)寫(xiě)端口),即寫(xiě)端口只能寫(xiě)不能讀,而讀 端口只能讀不能寫(xiě);對(duì)于真正雙端口RAM,有兩個(gè)地址端口用于讀寫(xiě)操作(兩個(gè)讀/寫(xiě)端口),即兩個(gè)端口都可以進(jìn)行讀寫(xiě)。

圖片

圖片

圖片

RAM IP核配置

一端口的配置幾乎和rom沒(méi)有區(qū)別

圖片

圖片

圖片

勾選上創(chuàng)建“aclr”異步復(fù)位信號(hào)以及是否創(chuàng)建“rden”讀使能信號(hào)

圖片

圖片

圖片

圖片

簡(jiǎn)單雙端口和真正雙端口都是在雙端口中去配置的,配置的選項(xiàng)的定義和ROM中一樣

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

圖片

真正雙端口的配置除了選擇真正雙端口以外,其他的選項(xiàng)和簡(jiǎn)單雙端口的配置一樣

圖片

設(shè)計(jì)規(guī)劃

按下按鍵1時(shí)往RAM地址0255里寫(xiě)入數(shù)據(jù)0255;按下按鍵2時(shí)讀取RAM內(nèi)的數(shù)據(jù),從地址0開(kāi)始每隔0.2s地址加1往下進(jìn)行讀??;再次按下按鍵1時(shí)停止讀取重新寫(xiě)入數(shù)據(jù)0~255;再次按下按鍵2時(shí)從頭開(kāi)始讀取數(shù)據(jù)

圖片

一共有5個(gè)模塊:按鍵消抖模塊(使用兩次),RAM控制模塊,IP核,數(shù)碼管動(dòng)態(tài)顯示模塊,頂層模塊。實(shí)際需要做的是RAM控制模塊

編寫(xiě)代碼

ROM控制模塊

圖片

RAM的寫(xiě)時(shí)序?yàn)椋寒?dāng)RAM寫(xiě)時(shí)鐘上升沿采到寫(xiě)使能為高時(shí),就能將該上升沿采到的數(shù)據(jù)寫(xiě)入該上升沿采到的地址中。

RAM的讀時(shí)序?yàn)椋寒?dāng)RAM讀時(shí)鐘上升沿采到讀使能為高時(shí),就能讀出該上升沿采到的地址中的數(shù)據(jù)。若是我們配置IP核時(shí) 沒(méi)有生成RAM讀使能 ,那么RAM就能直接讀出讀時(shí)鐘上升沿采到的地址中的數(shù)據(jù)。

按鍵1按下key_flag1拉高一個(gè)時(shí)鐘,寫(xiě)使能有效,地址從0-255,寫(xiě)數(shù)據(jù)從0-255,寫(xiě)完后寫(xiě)使能釋放;按鍵2按下時(shí)key_flag2拉高一個(gè)時(shí)鐘,讀使能有效,cnt_200開(kāi)始計(jì)數(shù),每0.2s讀取一次給出地址對(duì)應(yīng)的數(shù)據(jù)。讀完255后回到0繼續(xù)讀取,如此循環(huán),直至再次按下按鍵1,則讀使能釋放,再次寫(xiě)入數(shù)據(jù)。

若寫(xiě)使能有效時(shí),按下按鍵2并不能讀數(shù)據(jù)。寫(xiě)使能有效時(shí)再次按下按鍵1,地址歸0重新寫(xiě)入。

module ram_ctrl
(
input wire sys_clk , 
input wire sys_rst_n , 
input wire key1_flag , 
input wire key2_flag , 
output reg wr_en , //寫(xiě)RAM使能,高電平有效
output reg rd_en , //讀RAM使能,高電平有效
 output reg [7:0] addr , //讀寫(xiě)RAM地址
 output wire [7:0] wr_data //寫(xiě)RAM數(shù)據(jù)
 );


 //parameter define
 parameter CNT_MAX = 9_999_999; //0.2s計(jì)數(shù)器最大值


 //reg define
 reg [23:0] cnt_200ms ; //0.2s計(jì)數(shù)器


 //讓寫(xiě)入的數(shù)據(jù)等于地址數(shù),即寫(xiě)入數(shù)據(jù)0~255
 assign wr_data = (wr_en == 1'b1) ? addr : 8'd0;


 //wr_en:產(chǎn)生寫(xiě)RAM使能信號(hào)
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 wr_en <= 1'b0;
 else if(addr == 8'd255)
 wr_en <= 1'b0;
 else if(key1_flag == 1'b1)
 wr_en <= 1'b1;


 //rd_en:產(chǎn)生讀RAM使能信號(hào)
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 rd_en <= 1'b0;
 else if(key2_flag == 1'b1 && wr_en == 1'b0)
 rd_en <= 1'b1;
 else if(key1_flag == 1'b1)
 rd_en <= 1'b0;
 else
 rd_en <= rd_en;


 //0.2s循環(huán)計(jì)數(shù)
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt_200ms <= 24'd0;
 else if(cnt_200ms == CNT_MAX || key2_flag == 1'b1)
 cnt_200ms <= 24'd0;
 else if(rd_en == 1'b1)
 cnt_200ms <= cnt_200ms + 1'b1;


 //寫(xiě)使能有效時(shí),
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 addr <= 8'd0;
 else if((addr == 8'd255 && cnt_200ms == CNT_MAX) ||
 (addr == 8'd255 && wr_en == 1'b1) ||
 (key2_flag == 1'b1) || (key1_flag == 1'b1))
 addr <= 8'd0;
 else if((wr_en == 1'b1) || (rd_en == 1'b1 && cnt_200ms == CNT_MAX))
 addr <= addr + 1'b1;


 endmodule

輸入信號(hào)有時(shí)鐘,復(fù)位,按鍵1標(biāo)志信號(hào),按鍵2標(biāo)志信號(hào),輸出信號(hào)有寫(xiě)使能,讀使能,讀寫(xiě)地址,寫(xiě)數(shù)據(jù)

參數(shù)定義:計(jì)數(shù)器的最大計(jì)數(shù)值是9_999_999

寫(xiě)入數(shù)據(jù)和地址一致,用三目運(yùn)算符進(jìn)行選擇,如果寫(xiě)使能有效,寫(xiě)數(shù)據(jù)就是地址,無(wú)效寫(xiě)數(shù)據(jù)就為0

寫(xiě)使能信號(hào):復(fù)位有效時(shí)寫(xiě)使能歸0;地址為255時(shí)寫(xiě)使能歸0;按鍵1標(biāo)志信號(hào)拉高時(shí)寫(xiě)使能拉高

讀使能信號(hào):復(fù)位有效時(shí)讀使能歸0;按鍵1標(biāo)志信號(hào)拉高時(shí)讀使能歸0(即使在讀數(shù)據(jù),寫(xiě)使能有效時(shí)優(yōu)先寫(xiě)入數(shù)據(jù));按鍵2標(biāo)志信號(hào)拉高且寫(xiě)使能無(wú)效時(shí),讀信號(hào)拉高(寫(xiě)數(shù)據(jù)優(yōu)先,寫(xiě)使能無(wú)效時(shí)才能讀數(shù)據(jù));其他情況讀使能保持

計(jì)數(shù)cnt_200ms:復(fù)位有效時(shí)計(jì)數(shù)器歸0;計(jì)數(shù)到最大值且按鍵2標(biāo)志信號(hào)拉高時(shí)計(jì)數(shù)器歸0;讀使能有效時(shí)計(jì)數(shù)器+1

地址信號(hào):復(fù)位有效時(shí)地址歸0;地址為255且計(jì)數(shù)到最大值或者地址為255且寫(xiě)使能有效或者按鍵2標(biāo)志信號(hào)拉高或者按鍵1標(biāo)志信號(hào)拉高時(shí)地址歸0;寫(xiě)使能有效或讀使能為1且計(jì)數(shù)到最大值時(shí)地址+1

**頂層模塊
**

module ram
(
input wire sys_clk , 
input wire sys_rst_n , 
input wire [1:0] key ,
output wire stcp , 
output wire shcp , 
output wire ds 
 );


 //wire define
 wire wr_en ; 
 wire rd_en ; 
 wire [7:0] addr ; 
 wire [7:0] wr_data ; 
 wire [7:0] rd_data ; 
 wire key1_flag ; 
 wire key2_flag ; 


 ram_ctrl ram_ctrl_inst
 (
 .sys_clk (sys_clk ), 
 .sys_rst_n (sys_rst_n ), 
 .key1_flag (key1_flag ), 
 .key2_flag (key2_flag ), 
 .wr_en (wr_en ), 
 .rd_en (rd_en ), 
 .addr (addr ), 
 .wr_data (wr_data ) 
 );


 key_filter key1_filter_inst
 (
 .sys_clk (sys_clk ), 
 .sys_rst_n (sys_rst_n ), 
 .key_in (key[0] ), 
 .key_flag (key1_flag ) 
 );


 key_filter key2_filter_inst
 (
 .sys_clk (sys_clk ), 
 .sys_rst_n (sys_rst_n ), 
 .key_in (key[1] ), 
 .key_flag (key2_flag ) 
 );


 seg_595_dynamic seg_595_dynamic_inst
 (
 .sys_clk (sys_clk ), 
 .sys_rst_n (sys_rst_n ), 
 .data ({12'd0,rd_data} ), 
 .seg_en (1'b1 ), //數(shù)碼管使能信號(hào),高電平有效
 .stcp (stcp ), //輸出數(shù)據(jù)存儲(chǔ)寄時(shí)鐘
 .shcp (shcp ), //移位寄存器的時(shí)鐘輸入
 .ds (ds ), //串行數(shù)據(jù)輸入
 );


 //---------------rom_256x8_inst--------------
 ram_256x8 ram_256x8_inst
 (
 .aclr (~sys_rst_n ), //異步清零信號(hào)
 .address (addr ), //讀寫(xiě)地址線
 .clock (sys_clk ), //使用系統(tǒng)時(shí)鐘作為讀寫(xiě)時(shí)鐘
 .data (wr_data ), //輸入寫(xiě)入RAM的數(shù)據(jù)
 .rden (rd_en ), //讀RAM使能
 .wren (wr_en ), //寫(xiě)RAM使能
 .q (rd_data ) //輸出讀RAM數(shù)據(jù)
 );
 endmodule

實(shí)際上是幾個(gè)模塊的實(shí)例化:ram控制模塊,按鍵消抖模塊要實(shí)例化兩次,第一個(gè)模塊的key_in對(duì)應(yīng)著key[0],flag對(duì)應(yīng)key1_flag,第二個(gè)模塊的key_in對(duì)應(yīng)著key[1],flag對(duì)應(yīng)key2_flag,數(shù)碼管動(dòng)態(tài)顯示模塊將使能信號(hào)置1,ram的ip核模塊的異步清零信號(hào)置為復(fù)位信號(hào)取反,其他信號(hào)名和控制模塊中定義的信號(hào)名對(duì)接

圖片

Testbench

`timescale 1ns/1ns
module tb_ram();


//wire define
wire stcp;
wire shcp;
wire ds ;
//reg define
reg sys_clk ;
reg sys_rst_n ;
reg [1:0] key ;


//對(duì)sys_clk,sys_rst賦初值,并模擬按鍵抖動(dòng)
initial
begin
sys_clk = 1'b1 ;
sys_rst_n <= 1'b0 ;
key <= 2'b11;
#200 sys_rst_n <= 1'b1 ;
//按下按鍵key[1]
#2000 key[1] <= 1'b0;//按下按鍵
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#200 key[1] <= 1'b1;//松開(kāi)按鍵
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
//按下按鍵key[0]
#2000 key[0] <= 1'b0;//按下按鍵
#20 key[0] <= 1'b1;//模擬抖動(dòng)
#20 key[0] <= 1'b0;//模擬抖動(dòng)
#20 key[0] <= 1'b1;//模擬抖動(dòng)
#20 key[0] <= 1'b0;//模擬抖動(dòng)
#200 key[0] <= 1'b1;//松開(kāi)按鍵
#20 key[0] <= 1'b0;//模擬抖動(dòng)
#20 key[0] <= 1'b1;//模擬抖動(dòng)
#20 key[0] <= 1'b0;//模擬抖動(dòng)
#20 key[0] <= 1'b1;//模擬抖動(dòng)
//按下按鍵key[1]
#2000 key[1] <= 1'b0;//按下按鍵
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#200 key[1] <= 1'b1;//松開(kāi)按鍵
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
//按下按鍵key[1]
#2000 key[1] <= 1'b0;//按下按鍵
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#200 key[1] <= 1'b1;//松開(kāi)按鍵
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
//按下按鍵key[0]
#2000 key[0] <= 1'b0;//按下按鍵
#20 key[0] <= 1'b1;//模擬抖動(dòng)
#20 key[0] <= 1'b0;//模擬抖動(dòng)
#20 key[0] <= 1'b1;//模擬抖動(dòng)
#20 key[0] <= 1'b0;//模擬抖動(dòng)
#200 key[0] <= 1'b1;//松開(kāi)按鍵
#20 key[0] <= 1'b0;//模擬抖動(dòng)
#20 key[0] <= 1'b1;//模擬抖動(dòng)
#20 key[0] <= 1'b0;//模擬抖動(dòng)
#20 key[0] <= 1'b1;//模擬抖動(dòng)
//按下按鍵key[1]
#2000 key[1] <= 1'b0;//按下按鍵
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#200 key[1] <= 1'b1;//松開(kāi)按鍵
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
#20 key[1] <= 1'b0;//模擬抖動(dòng)
#20 key[1] <= 1'b1;//模擬抖動(dòng)
end
//sys_clk:模擬系統(tǒng)時(shí)鐘,每10ns電平取反一次,周期為20ns,頻率為50MHz
always #10 sys_clk = ~sys_clk;


 //重新定義參數(shù)值,縮短仿真時(shí)間仿真
 defparam ram_inst.key1_filter_inst.CNT_MAX = 5 ;
 defparam ram_inst.key2_filter_inst.CNT_MAX = 5 ;
 defparam ram_inst.ram_ctrl_inst.CNT_MAX = 99;


 //---------------ram_inst--------------
 ram ram_inst
 (
 .sys_clk (sys_clk ), //系統(tǒng)時(shí)鐘,頻率50MHz
 .sys_rst_n (sys_rst_n ), //復(fù)位信號(hào),低電平有效
 .key (key ), //輸入按鍵信號(hào)
 .stcp (stcp ), //輸出數(shù)據(jù)存儲(chǔ)寄時(shí)鐘
 .shcp (shcp ), //移位寄存器的時(shí)鐘輸入
 .ds (ds ), //串行數(shù)據(jù)輸入
 );
 endmodule

初始化:時(shí)鐘為高電平,復(fù)位為低電平,按鍵都為高電平表示未按下

延遲200ns后復(fù)位釋放

延遲2000ns后按下按鍵2但是模擬抖動(dòng),抖動(dòng)中有200ns的按鍵是按下?tīng)顟B(tài)以便識(shí)別并拉高flag

再重復(fù)模擬按下按鍵1,2,2,1,2

重新定義參數(shù),縮短仿真時(shí)間

ram模塊實(shí)例化

波形變化

需要注意的是地址和數(shù)據(jù)需要用unsigned格式,如果用十進(jìn)制會(huì)出現(xiàn)負(fù)數(shù)

先按下的是key2,因?yàn)檫€沒(méi)寫(xiě)入所以讀出的q暫時(shí)沒(méi)有數(shù)據(jù)

圖片

按下按鍵1,寫(xiě)使能拉高,地址和數(shù)據(jù)都開(kāi)始+1,且因?yàn)檎趯?xiě)數(shù)據(jù),讀出的q暫時(shí)沒(méi)有數(shù)據(jù)

圖片

地址線和數(shù)據(jù)255后歸0保持0且寫(xiě)使能拉低

圖片

寫(xiě)數(shù)據(jù)后再讀數(shù)據(jù)就能讀出數(shù)據(jù)

圖片

管腳分配

圖片

和上一篇一樣

全編譯后上板驗(yàn)證

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

    關(guān)注

    1645

    文章

    22050

    瀏覽量

    618628
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7653

    瀏覽量

    167439
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1392

    瀏覽量

    117560
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    1046

    瀏覽量

    32955
  • IP核
    +關(guān)注

    關(guān)注

    4

    文章

    338

    瀏覽量

    50822
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    關(guān)于FPGA IP

    對(duì)于深入學(xué)習(xí)使用FPGA的小伙伴們,特別是一些復(fù)雜的、大規(guī)模的設(shè)計(jì)應(yīng)用,適宜的IP核對(duì)開(kāi)發(fā)能起到事半功倍的作用。IP的概念與我們sdk里庫(kù)
    發(fā)表于 04-29 21:01

    FPGAIP使用技巧

    的工作原理、使用方法和限制條件。 參數(shù)化配置 : 如果IP提供了參數(shù)化配置選項(xiàng),可以根據(jù)項(xiàng)目需求進(jìn)行配置。例如,對(duì)于RAM IP
    發(fā)表于 05-27 16:13

    FPGA IP的相關(guān)問(wèn)題

    我用的是xinlinx spartan6 FPGA,我想知道它的IPRAM是與FPGA獨(dú)立的,只是集成在了一起呢,還是占用了
    發(fā)表于 01-10 17:19

    xilinx FPGA的FFT IP的調(diào)用

    有沒(méi)有大神可以提供xilinx FPGA的FFT IP的調(diào)用的verilog 的參考程序,最近在學(xué)習(xí)FFT的IP
    發(fā)表于 12-25 17:05

    LabVIEW FPGA CORDIC IP的arctan使用方法

    使用LabVIEW FPGA模塊中的CORDIC IP,配置arctan(X/Y)算法,配置完成之后,IP只有一個(gè)輸入。我參考網(wǎng)上VHD
    發(fā)表于 09-10 20:07

    【雨的FPGA筆記】基礎(chǔ)實(shí)踐-------IPRAM的使用

    `內(nèi)容: 使用IP中的RAM進(jìn)行讀寫(xiě),數(shù)據(jù)位寬為32位RAM讀寫(xiě)模塊輸出給RAM模塊的有{寫(xiě)使能、寫(xiě)數(shù)據(jù)、地址、讀使能},
    發(fā)表于 01-23 15:28

    基于IPFPGA設(shè)計(jì)方法是什么?

    的分類(lèi)和特點(diǎn)是什么?基于IPFPGA設(shè)計(jì)方法是什么?
    發(fā)表于 05-08 07:07

    請(qǐng)問(wèn)Altera RAM IP怎么使用?

    請(qǐng)問(wèn)Altera RAM IP怎么使用?
    發(fā)表于 01-18 06:59

    FPGA零基礎(chǔ)學(xué)習(xí)IP CORE 之 RAM設(shè)計(jì)

    的相關(guān)內(nèi)容,學(xué)習(xí)FPGA設(shè)計(jì)方法及設(shè)計(jì)思想的同時(shí),實(shí)操結(jié)合各類(lèi)操作軟件,會(huì)讓你在技術(shù)學(xué)習(xí)道路上無(wú)比的順暢,告別技術(shù)學(xué)習(xí)小BUG卡破腦殼,告別
    發(fā)表于 03-14 17:38

    FPGAIP的生成

    FPGAIP的生成,簡(jiǎn)單介紹Quartus II生成IP的基本操作,簡(jiǎn)單實(shí)用挺不錯(cuò)的資料
    發(fā)表于 11-30 17:36 ?12次下載

    采用FPGAIP來(lái)實(shí)現(xiàn)DDR RAM控制和驗(yàn)證的方法

    DDR SDRAM的接口特性:其輸入輸出引腳與SSTL-Ⅱ電氣特性兼容,內(nèi)部提供了DDR觸發(fā)器、鎖相環(huán)等硬件資源。使用這些特性,可以比較容易地設(shè)計(jì)性能可靠的高速DDR RAM控制器。本文介紹一種采用FPGAIP來(lái)實(shí)現(xiàn)DDR
    發(fā)表于 11-24 16:00 ?4330次閱讀
    采用<b class='flag-5'>FPGA</b>與<b class='flag-5'>IP</b>來(lái)實(shí)現(xiàn)DDR <b class='flag-5'>RAM</b>控制和驗(yàn)證的<b class='flag-5'>方法</b>

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP的使用

    ? Xilinx公司的FPGA中有著很多的有用且對(duì)整個(gè)工程很有益處的IP,比如數(shù)學(xué)類(lèi)的IP,數(shù)字信號(hào)處理使用的
    的頭像 發(fā)表于 12-29 15:59 ?1.3w次閱讀

    FPGA學(xué)習(xí)筆記:PLL IP使用方法

    IP(Intellectual Property)是知識(shí)產(chǎn)權(quán)的意思,半導(dǎo)體行業(yè)的IP是“用于ASIC或FPGA中的預(yù)先設(shè)計(jì)好的電路功能模塊”。一些常用的復(fù)雜的功能模塊(如FIFO、RAM
    的頭像 發(fā)表于 08-22 15:04 ?6604次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>:PLL <b class='flag-5'>IP</b><b class='flag-5'>核</b>的<b class='flag-5'>使用方法</b>

    FPGA學(xué)習(xí)筆記:ROM IP使用方法

    上一篇介紹了常用的鎖相環(huán)IP,這一節(jié)將介紹一種較為常用的 存儲(chǔ)類(lèi)IP ——ROM的使用方法。ROM是 只讀存儲(chǔ)器 (Read-Only Memory),顧名思義,我們只能讀出事先存放
    的頭像 發(fā)表于 08-22 15:06 ?6812次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>:ROM <b class='flag-5'>IP</b><b class='flag-5'>核</b>的<b class='flag-5'>使用方法</b>

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有著很多的有用且對(duì)整個(gè)工程很有益處的IP,比如數(shù)學(xué)類(lèi)的IP,數(shù)字信號(hào)處理使用的
    的頭像 發(fā)表于 12-05 15:05 ?2425次閱讀