91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

RAM-Based Shift Register Xilinx IP核的使用

FPGA設(shè)計論壇 ? 來源:GitCode 開源社區(qū) ? 2025-01-21 15:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一般來講,如果要實現(xiàn)移位寄存器的話,通常都是寫RTL用reg來構(gòu)造,比如1bit變量移位一個時鐘周期就用1個reg,也就是一個寄存器FF資源,而移位16個時鐘周期就需要16個FF,這種方法無疑非常浪費資源。

Xilinx FPGA的SLICEM中的一個查找表LUT可以配置為最多移位32個時鐘周期的移位寄存器,這比直接用FF來搭省了31個FF資源。

這種方法可以通過調(diào)用原語SRL16E(最多16個周期)和SRLC32E(最多32個周期)來實現(xiàn)。

   SRL16E #(
      .INIT(16'h0000),        // Initial contents of shift register
      .IS_CLK_INVERTED(1'b0)  // Optional inversion for CLK
   )
   SRL16E_inst (
      .Q(Q),     // 1-bit output: SRL Data
      .CE(CE),   // 1-bit input: Clock enable
      .CLK(CLK), // 1-bit input: Clock
      .D(D),     // 1-bit input: SRL Data
      // Depth Selection inputs: A0-A3 select SRL depth
      .A0(A0),
      .A1(A1),
      .A2(A2),
      .A3(A3) 
   );

   // End of SRL16E_inst instantiation


// SRLC32E: 32-bit variable length cascadable shift register LUT (Mapped to a SliceM LUT6)
// with clock enable
 
SRLC32E #(
.INIT(32'h00000000) // Initial Value of Shift Register
) SRLC32E_inst (
    .Q(Q), // SRL data output
.Q31(Q31), // SRL cascade output pin
.A(A), // 5-bit shift depth select input
.CE(CE), // Clock enable input
.CLK(CLK), // Clock input
.D(D) // SRL data input
);
 
// End of SRLC32E_inst instantiation

如果需要實現(xiàn)更多時鐘周期的移位寄存器,則可以使用多個SRLC32E或者SRL16E來級聯(lián)實現(xiàn)。

IP核的定制

除了用原語實現(xiàn)外,還可以調(diào)用RAM-Based Shift Register這個IP核來實現(xiàn)。IP核實現(xiàn)方法使用不如原語方便,但是其對實現(xiàn)方式做了一些優(yōu)化,具有比原語更好的時序性能。

第一頁內(nèi)容

a9e98f6c-d7ca-11ef-9310-92fbcf53809c.png

Shift Register Type:fixed length為固定長度;variable length lossless為可變長度

optimization:只有選擇可變長度時才可選,可以選擇優(yōu)化面積還是優(yōu)化時序。如果優(yōu)化時序,則可能會多幾個延遲latency。

clocking options:Register last bit只有選擇可變長度時才可選,會把輸出寄存一拍以改善時序,同時增加一個時鐘的延遲。clock enable(CE)時鐘使能功能。

dimensions:width移位寄存器寬度,depth移位寄存器深度。

latency information:延遲信息,根據(jù)各個選項的不同,輸出延遲可能會增加1~3個時鐘周期。

第二頁內(nèi)容

a9fcaafc-d7ca-11ef-9310-92fbcf53809c.png

initialization options:初始化選項,選擇初始化的進(jìn)制radix和默認(rèn)值default data。

COE file:初始化的值還可以選擇從COE文件來載入。

第三頁

aa080e56-d7ca-11ef-9310-92fbcf53809c.png

power-on reset settings:上電復(fù)位設(shè)置選項,選擇上電復(fù)位的進(jìn)制radix和初始值init data。

synchronous settings:同步設(shè)置,可以設(shè)置同步復(fù)位SCLR和同步置位SSET,二者的優(yōu)先級可選,默認(rèn)復(fù)位優(yōu)先級高于置位,如果選擇置位優(yōu)先級更高,則會消耗多余的資源。復(fù)位/置位與初始化SINT二者之間互斥。這三個選項一般都沒必要用。

synchronous controls(sync) and clock enable(CE) priority:選擇同步控制信號和CE信號的優(yōu)先級。默認(rèn)同步控制信號的優(yōu)先級高于CE,反之則會消耗多余的資源。

IP核的仿真使用

定制一個深度為64,位寬為16的IP核,然后編寫RTL代碼:

//固定的深度64個時鐘周期,位寬16的移位寄存器IP核設(shè)計
module shift_w16_d64(
inputclk,//時鐘信號
input[15:0]in,//移位前的輸入數(shù)據(jù),位寬為16
inputce,//時鐘使能信號
output[15:0]out//移位后的輸出,位寬為16
);

//移位寄存器IP;固定移位64個時鐘周期,位寬16
c_shift_ram_1 your_instance_name (
  .D(in),//移位前的輸入數(shù)據(jù),位寬為16
  .CLK(clk),//時鐘信號
  .CE(ce),//時鐘使能信號
  .Q(out)//移位后的輸出,位寬為16
);

endmodule

綜合后的資源使用情況:32個LUT + 32個FF。

aa1bd292-d7ca-11ef-9310-92fbcf53809c.png

看下綜合后的電路圖:

aa34649c-d7ca-11ef-9310-92fbcf53809c.png

因為1個SRLC32E可以實現(xiàn)32個周期的移位,所以16×64的移位操作實際上只需要32個SRLC32E就可以實現(xiàn)了,為了改善時序性能,IP核在輸入端口和輸出端口一共用了2×16 = 32個FF來打拍寄存。

接下來編寫TB:時鐘使能信號一直拉高,輸入數(shù)據(jù)從1開始累加。

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

//信號聲明
regclk;
regrst;
reg[15:0]in;
regce;
wire[15:0]out;

//被測模塊實例化
shift_w16_d64inst_shift_w16_d64(
.clk(clk),
.in(in),
.ce(ce),
.out(out)
);

//生成時鐘信號
initial begin
    clk= 1'b0;
forever #5 clk = ~clk;
end

//生成復(fù)位信號
initial begin
rst = 1'b1;//復(fù)位
    #45 rst = 1'b0; //取消復(fù)位
end 

//生成輸入數(shù)據(jù)與時鐘使能信號
always @(posedge clk or posedge rst)begin
if(rst)begin
in <= 16'd0;
ce <= 1'b0;
end
else begin 
in <= in + 1'b1;//輸入數(shù)據(jù)累加1
ce <= 1'b1;//時鐘使能信號一直拉高
end
end

//仿真過程
initial begin
#1000 $stop;//關(guān)閉仿真
end

endmodule

仿真結(jié)果如下:
aa5317d4-d7ca-11ef-9310-92fbcf53809c.png
aa6ab6fa-d7ca-11ef-9310-92fbcf53809c.png

原文鏈接:

https://gitcode.csdn.net/65e6e9d51a836825ed787cef.html

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

    關(guān)注

    31

    文章

    5608

    瀏覽量

    129943
  • Xilinx
    +關(guān)注

    關(guān)注

    73

    文章

    2200

    瀏覽量

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

    關(guān)注

    4

    文章

    344

    瀏覽量

    51943

原文標(biāo)題:RAM-Based Shift Register Xilinx IP核的使用

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    想要仿真下Quartus中的Shift RegisterRAM-based),但是modelsim仿...

    endmodulemodelsim-ase編譯正確,仿真時出錯# ** Error: (vsim-10000) F:/Quartus11.0_exercise/quartus_exercise/shift_reg_ram_based
    發(fā)表于 05-05 20:10

    移位寄存器Shift Register(RAM-based)的如何實現(xiàn)延時

    想請問大家,移位寄存器Shift Register(RAM-based)的如何實現(xiàn)延時,也看了一些關(guān)于IP的資料,可是還是不是很明白,看到
    發(fā)表于 11-13 17:19

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

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

    RAMbased shift register如何設(shè)置

    我想實現(xiàn)串進(jìn)并出的功能,怎么這個寄存器只有并進(jìn)并出呢?這個并進(jìn)并出是什么意思呢?跪求大牛們解答
    發(fā)表于 06-18 17:09

    RAMbased shift register如何設(shè)置

    這個移位寄存器怎么設(shè)置呢?這個并行輸入和并行輸出是什么意思呢?我并行輸入0001,那么也并行輸出0001嗎?想問一下這個寄存器的真值表,求大神解答
    發(fā)表于 06-24 12:50

    移位寄存器的輸出與時鐘不對齊

    to me. I am using a variable-length RAM-based shift register (.xco and .vhd files attached) which has
    發(fā)表于 01-14 07:15

    請問Altera RAM IP怎么使用?

    請問Altera RAM IP怎么使用?
    發(fā)表于 01-18 06:59

    Gowin RAM Based Shift Register IP用戶指南

    Gowin RAM Based Shift Register IP用戶指南主要內(nèi)容包括功能特點、端口描述、時序說明、配置調(diào)用等。主要用于幫助
    發(fā)表于 10-08 06:53

    Gowin RAM Based Shift Register IP參考設(shè)計

    Gowin RAM Based Shift Register IP參考設(shè)計主要內(nèi)容包括端口描述、配置調(diào)用、參考設(shè)計等。主要用于幫助用戶快速了
    發(fā)表于 10-08 07:40

    Gowin RAM Based Shift Register IP用戶指南及參考設(shè)計

    本次發(fā)布 Gowin RAM Based Shift Register IP 用戶指南及參考設(shè)計。Gowin
    發(fā)表于 10-08 06:08

    英創(chuàng)信息技術(shù)WinCE RAM-Based與Hive-Based注冊表介紹

    Windows Embedded CE嵌入式操作系統(tǒng)支持兩種不同的注冊表類型:RAM-based注冊表和Hive-based注冊表。 RAM-based注冊表將所有注冊表信息保存在對象存儲
    的頭像 發(fā)表于 02-03 09:14 ?2065次閱讀
    英創(chuàng)信息技術(shù)WinCE <b class='flag-5'>RAM-Based</b>與Hive-<b class='flag-5'>Based</b>注冊表介紹

    Gowin RAM Based Shift Register用戶指南

    電子發(fā)燒友網(wǎng)站提供《Gowin RAM Based Shift Register用戶指南.pdf》資料免費下載
    發(fā)表于 09-15 14:29 ?0次下載
    Gowin <b class='flag-5'>RAM</b> <b class='flag-5'>Based</b> <b class='flag-5'>Shift</b> <b class='flag-5'>Register</b>用戶指南

    Gowin RAM Based Shift Register參考設(shè)計

    電子發(fā)燒友網(wǎng)站提供《Gowin RAM Based Shift Register參考設(shè)計.pdf》資料免費下載
    發(fā)表于 09-15 14:28 ?1次下載
    Gowin <b class='flag-5'>RAM</b> <b class='flag-5'>Based</b> <b class='flag-5'>Shift</b> <b class='flag-5'>Register</b>參考設(shè)計

    如何申請xilinx IP的license

    在使用FPGA的時候,有些IP是需要申請后才能使用的,本文介紹如何申請xilinx IP的license。
    的頭像 發(fā)表于 10-25 16:48 ?2513次閱讀
    如何申請<b class='flag-5'>xilinx</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的license

    Xilinx Shift RAM IP概述和主要功能

    Xilinx Shift RAM IP 是 AMD Xilinx 提供的一個 LogiCORE IP
    的頭像 發(fā)表于 05-14 09:36 ?1060次閱讀