0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RAM-Based Shift Register Xilinx IP核的使用

FPGA设计论坛 来源:GitCode 开源社区 2025-01-21 15:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一般来讲,如果要实现移位寄存器的话,通常都是写RTL用reg来构造,比如1bit变量移位一个时钟周期就用1个reg,也就是一个寄存器FF资源,而移位16个时钟周期就需要16个FF,这种方法无疑非常浪费资源。

Xilinx FPGA的SLICEM中的一个查找表LUT可以配置为最多移位32个时钟周期的移位寄存器,这比直接用FF来搭省了31个FF资源。

这种方法可以通过调用原语SRL16E(最多16个周期)和SRLC32E(最多32个周期)来实现。

   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

如果需要实现更多时钟周期的移位寄存器,则可以使用多个SRLC32E或者SRL16E来级联实现。

IP核的定制

除了用原语实现外,还可以调用RAM-Based Shift Register这个IP核来实现。IP核实现方法使用不如原语方便,但是其对实现方式做了一些优化,具有比原语更好的时序性能。

第一页内容

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

Shift Register Type:fixed length为固定长度;variable length lossless为可变长度

optimization:只有选择可变长度时才可选,可以选择优化面积还是优化时序。如果优化时序,则可能会多几个延迟latency。

clocking options:Register last bit只有选择可变长度时才可选,会把输出寄存一拍以改善时序,同时增加一个时钟的延迟。clock enable(CE)时钟使能功能。

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

latency information:延迟信息,根据各个选项的不同,输出延迟可能会增加1~3个时钟周期。

第二页内容

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

initialization options:初始化选项,选择初始化的进制radix和默认值default data。

COE file:初始化的值还可以选择从COE文件来载入。

第三页

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

power-on reset settings:上电复位设置选项,选择上电复位的进制radix和初始值init data。

synchronous settings:同步设置,可以设置同步复位SCLR和同步置位SSET,二者的优先级可选,默认复位优先级高于置位,如果选择置位优先级更高,则会消耗多余的资源。复位/置位与初始化SINT二者之间互斥。这三个选项一般都没必要用。

synchronous controls(sync) and clock enable(CE) priority:选择同步控制信号和CE信号的优先级。默认同步控制信号的优先级高于CE,反之则会消耗多余的资源。

IP核的仿真使用

定制一个深度为64,位宽为16的IP核,然后编写RTL代码:

//固定的深度64个时钟周期,位宽16的移位寄存器IP核设计
module shift_w16_d64(
inputclk,//时钟信号
input[15:0]in,//移位前的输入数据,位宽为16
inputce,//时钟使能信号
output[15:0]out//移位后的输出,位宽为16
);

//移位寄存器IP;固定移位64个时钟周期,位宽16
c_shift_ram_1 your_instance_name (
  .D(in),//移位前的输入数据,位宽为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可以实现32个周期的移位,所以16×64的移位操作实际上只需要32个SRLC32E就可以实现了,为了改善时序性能,IP核在输入端口和输出端口一共用了2×16 = 32个FF来打拍寄存。

接下来编写TB:时钟使能信号一直拉高,输入数据从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

//生成复位信号
initial begin
rst = 1'b1;//复位
    #45 rst = 1'b0; //取消复位
end 

//生成输入数据与时钟使能信号
always @(posedge clk or posedge rst)begin
if(rst)begin
in <= 16'd0;
ce <= 1'b0;
end
else begin 
in <= in + 1'b1;//输入数据累加1
ce <= 1'b1;//时钟使能信号一直拉高
end
end

//仿真过程
initial begin
#1000 $stop;//关闭仿真
end

endmodule

仿真结果如下:
aa5317d4-d7ca-11ef-9310-92fbcf53809c.png
aa6ab6fa-d7ca-11ef-9310-92fbcf53809c.png

原文链接:

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5590

    浏览量

    129163
  • Xilinx
    +关注

    关注

    73

    文章

    2193

    浏览量

    130064
  • IP核
    +关注

    关注

    4

    文章

    339

    浏览量

    51736

原文标题:RAM-Based Shift Register Xilinx IP核的使用

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    endmodulemodelsim-ase编译正确,仿真时出错# ** Error: (vsim-10000) F:/Quartus11.0_exercise/quartus_exercise/shift_reg_ram_based
    发表于 05-05 20:10

    移位寄存器Shift Register(RAM-based)的如何实现延时

    想请问大家,移位寄存器Shift Register(RAM-based)的如何实现延时,也看了一些关于IP的资料,可是还是不是很明白,看到
    发表于 11-13 17:19

    xilinx FPGA的FFT IP的调用

    有没有大神可以提供xilinx FPGA的FFT IP的调用的verilog 的参考程序,最近在学习FFT的IP的使用,但是仿真结果有问
    发表于 12-25 17:05

    RAMbased shift register如何设置

    我想实现串进并出的功能,怎么这个寄存器只有并进并出呢?这个并进并出是什么意思呢?跪求大牛们解答
    发表于 06-18 17:09

    RAMbased shift register如何设置

    这个移位寄存器怎么设置呢?这个并行输入和并行输出是什么意思呢?我并行输入0001,那么也并行输出0001吗?想问一下这个寄存器的真值表,求大神解答
    发表于 06-24 12:50

    移位寄存器的输出与时钟不对齐

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

    请问Altera RAM IP怎么使用?

    请问Altera RAM IP怎么使用?
    发表于 01-18 06:59

    Gowin RAM Based Shift Register IP用户指南

    Gowin RAM Based Shift Register IP用户指南主要内容包括功能特点、端口描述、时序说明、配置调用等。主要用于帮助
    发表于 10-08 06:53

    Gowin RAM Based Shift Register IP参考设计

    Gowin RAM Based Shift Register IP参考设计主要内容包括端口描述、配置调用、参考设计等。主要用于帮助用户快速了
    发表于 10-08 07:40

    Gowin RAM Based Shift Register IP用户指南及参考设计

    本次发布 Gowin RAM Based Shift Register IP 用户指南及参考设计。Gowin
    发表于 10-08 06:08

    英创信息技术WinCE RAM-Based与Hive-Based注册表介绍

    Windows Embedded CE嵌入式操作系统支持两种不同的注册表类型:RAM-based注册表和Hive-based注册表。 RAM-based注册表将所有注册表信息保存在对象存储
    的头像 发表于 02-03 09:14 1930次阅读
    英创信息技术WinCE <b class='flag-5'>RAM-Based</b>与Hive-<b class='flag-5'>Based</b>注册表介绍

    Gowin RAM Based Shift Register用户指南

    电子发烧友网站提供《Gowin RAM Based Shift Register用户指南.pdf》资料免费下载
    发表于 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参考设计

    电子发烧友网站提供《Gowin RAM Based Shift Register参考设计.pdf》资料免费下载
    发表于 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>参考设计

    如何申请xilinx IP的license

    在使用FPGA的时候,有些IP是需要申请后才能使用的,本文介绍如何申请xilinx IP的license。
    的头像 发表于 10-25 16:48 2164次阅读
    如何申请<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
    的头像 发表于 05-14 09:36 860次阅读