衡阳派盒市场营销有限公司

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

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

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

RAM-Based Shift Register Xilinx IP核的使用

FPGA設(shè)計(jì)論壇 ? 來(lái)源:GitCode 開(kāi)源社區(qū) ? 2025-01-21 15:42 ? 次閱讀

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

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

這種方法可以通過(guò)調(diào)用原語(yǔ)SRL16E(最多16個(gè)周期)和SRLC32E(最多32個(gè)周期)來(lái)實(shí)現(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

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

IP核的定制

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

第一頁(yè)內(nèi)容

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

Shift Register Type:fixed length為固定長(zhǎng)度;variable length lossless為可變長(zhǎng)度

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

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

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

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

第二頁(yè)內(nèi)容

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

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

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

第三頁(yè)

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

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

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

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

IP核的仿真使用

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

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

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

endmodule

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

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

看下綜合后的電路圖:

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

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

接下來(lái)編寫TB:時(shí)鐘使能信號(hào)一直拉高,輸入數(shù)據(jù)從1開(kāi)始累加。

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

//信號(hào)聲明
regclk;
regrst;
reg[15:0]in;
regce;
wire[15:0]out;

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

//生成時(shí)鐘信號(hào)
initial begin
    clk= 1'b0;
forever #5 clk = ~clk;
end

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

//生成輸入數(shù)據(jù)與時(shí)鐘使能信號(hào)
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;//時(shí)鐘使能信號(hào)一直拉高
end
end

//仿真過(guò)程
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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5363

    瀏覽量

    121151
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2171

    瀏覽量

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

    關(guān)注

    4

    文章

    331

    瀏覽量

    49634

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    Xilinx系列FPGA芯片IP詳解

    `Xilinx系列FPGA芯片IP詳解(完整高清書簽版)`
    發(fā)表于 06-06 13:15

    RAMbased shift register如何設(shè)置

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

    RAMbased shift register如何設(shè)置

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

    移位寄存器的輸出與時(shí)鐘不對(duì)齊

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

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

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

    Gowin RAM Based Shift Register IP用戶指南

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

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

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

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

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

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

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

    Gowin RAM Based Shift Register用戶指南

    電子發(fā)燒友網(wǎng)站提供《Gowin RAM Based Shift Register用戶指南.pdf》資料免費(fèi)下載
    發(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è)計(jì)

    電子發(fā)燒友網(wǎng)站提供《Gowin RAM Based Shift Register參考設(shè)計(jì).pdf》資料免費(fèi)下載
    發(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è)計(jì)

    如何申請(qǐng)xilinx IP的license

    在使用FPGA的時(shí)候,有些IP是需要申請(qǐng)后才能使用的,本文介紹如何申請(qǐng)xilinx IP的license。
    的頭像 發(fā)表于 10-25 16:48 ?487次閱讀
    如何申請(qǐng)<b class='flag-5'>xilinx</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的license
    皇冠百家乐官网客户端皇冠| 利记娱乐| 电投百家乐网站| 金海岸百家乐官网娱乐城| 手机棋牌游戏| 真人百家乐赌法| 百家乐官网真人游戏赌场娱乐网规则 | 粤港澳百家乐官网娱乐平台| 皇家金堡娱乐| 百家乐珠盘路| 真人百家乐官网赌注| 灵宝市| 大发888游戏平台 新葡京| 百家乐扑克投注赢钱法| 百家乐官网视频裸聊| 百家乐什么方法容易赢| 百家乐概率投注| 百家乐官网赌博平台| 聂拉木县| 大发888下载 df888gfxzylc8| 百家乐楼梯缆| 财富百家乐官网的玩法技巧和规则| 伟博百家乐官网现金网| 德州扑克平台| 七匹狼百家乐的玩法技巧和规则| 百家乐遥控牌靴| 沙龙百家乐官网娱乐城| 百家乐官网专打和局| 开花财国际| 大发888客户端| 百家乐官网全部规则| 百家乐官网必胜法hk| 银河国际娱乐| 大发888皇家赌场| 百家乐小揽| 奔驰百家乐可信吗| 吉利百家乐官网的玩法技巧和规则| 366百家乐官网娱乐城| 阜宁县| 乐天堂在线投注| 澳门美高梅赌场|