一、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時鐘