基于Xilinx RAM-based Shift Register IP核实现双抽头移位寄存器(shift_register_2taps)
一、IP核配置步骤
1、打开Vivado IP Catalog
在Vivado工程中,右键点击IP Catalog,搜索"Shift Register"。
2、选择RAM-based Shift Register
双击打开配置界面。
3、关键参数设置
Component Name: shift_register_2taps
Shift Register Type: RAM-based
Data Width: 数据位宽(如8位)
Depth: 移位寄存器总深度(需大于最大抽头延迟)
Clock Enable (CE): 按需启用
Synchronous Reset (SCLR): 按需启用
4、添加抽头(Taps)
Tap 1: 设置第一个抽头延迟(如D1=5)
Tap 2: 设置第二个抽头延迟(如D2=10)
5、生成IP核
确认配置后生成IP核,并添加到工程中。
二、Verilog 例化代码
点击查看代码
module shift_register_2taps_example (
input wire clk, // 时钟
input wire ce, // 时钟使能(如果启用)
input wire sclr, // 同步复位(如果启用)
input wire [7:0] din, // 输入数据
output wire [7:0] dout1, // 抽头1输出(延迟D1)
output wire [7:0] dout2 // 抽头2输出(延迟D2)
);
// 例化RAM-based Shift Register IP核
shift_register_2taps your_instance_name (
.CLK(clk), // 时钟输入
.CE(ce), // 时钟使能(可选)
.SCLR(sclr), // 同步复位(可选)
.D(din), // 输入数据
.Q({dout2, dout1}) // 抽头输出,顺序与IP配置一致
);
endmodule
Q[7:0] 对应第一个抽头(D1=5)
Q[15:8] 对应第二个抽头(D2=10)
2、资源类型选择
小延迟(<32): 使用分布式RAM(LUTRAM)
大延迟(≥32): 使用块RAM(BRAM)以提高资源效率
3、时序注意事项
输入数据在时钟上升沿被捕获。
抽头输出延迟计算:
dout1 在 D1 个时钟周期后输出,dout2 在 D2 个周期后输出。
四、仿真测试示意
点击查看代码
initial begin
// 初始化信号
clk = 0;
ce = 1;
sclr = 0;
din = 8'h01;
// 复位测试
#10 sclr = 1;
#20 sclr = 0;
// 观察输出延迟
// din=0x01 应在D1=5周期后出现在dout1
// 并在D2=10周期后出现在dout2
end
always #5 clk = ~clk; // 100MHz时钟
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目