动态

详情 返回 返回

基於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
三、關鍵説明 1、抽頭順序 輸出端口Q的位寬為 數據寬度 * 抽頭數量。例如,若數據寬度為8位,2個抽頭則Q為[15:0],其中:

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

Add a new 评论

Some HTML is okay.