xilinx fpga 生成3*3窗口

       在写滤波程序的时候在网上看了好几篇大佬的笔记,都有提到使用3*3窗口,由于小白一个,看到复杂的理论就惧怕的不行。但是现在不得不上,自己调用移位寄存器ip核然后做了个3*3窗口出来,自己动手作出来忽然感觉到也不难嘛。

       先贴一张ip核模块的接口参数图

生成3*3窗口需要两个寄存器,参数设置为数据宽度8,深度一个为4,另一个为3,选sclr端口

然后把两个移位寄存器串联起来就可以了

仿真的时候写好激励就行

放上最后仿真图

两条线那会是不是3*3矩阵呀,然后往右推就行。

顶层模块

 1 module shift3by3(
 2 clk,
 3 rst_n,
 4 datain,
 5 dataout
 6 );
 7 input clk;
 8 input rst_n;
 9 input [7:0] datain;
10 output [7:0] dataout;
11 
12 wire [7:0] d_in;
13 wire sclr;
14 
15 
16 shiftip shift2(
17         .clk(clk), 
18         .sclr(~rst_n),
19         .d(datain), 
20         .q(d_in)
21 );
22 
23 shift3 shift3(
24     .clk(clk),
25     .sclr(~rst_n), 
26         .d(d_in), 
27         .q(dataout)
28 );
29 
30 endmodule
View Code

tesrbench

 1 module shiftiptb;
 2 
 3     // Inputs
 4     reg clk;
 5     reg [7:0] d;
 6 
 7     // Outputs
 8     wire [7:0] q;
 9 
10     // Instantiate the Unit Under Test (UUT)
11     shiftip uut (
12         .clk(clk), 
13         .d(d), 
14         .q(q)
15     );
16 initial clk=1;
17 always #10 clk=!clk;
18     initial begin
19         // Initialize Inputs
20         #20 d=11;
21         #20 d=22;
22         #20 d=33;
23         #20 d=44;
24         #20 d=55;
25         #20 d=66;
26         #20 d=77;
27         #20 d=88;
28         #20 d=99;
29         
30         
31 
32         // Wait 100 ns for global reset to finish
33         #100;
34         
35         // Add stimulus here
36 
37     end
38       
39 endmodule
View Code

 之前没有将矩阵里的9个元素列出来,现在将9个元素列出来,

赋值代码如下:

 1 always @(posedge clk or negedge rst_n)
 2     if(!rst_n)
 3       begin
 4         {a11,a12,a13} <= {8'b0,8'b0,8'b0};
 5         {a21,a22,a23} <= {8'b0,8'b0,8'b0};
 6         {a31,a32,a33} <= {8'b0,8'b0,8'b0};
 7         row <= 8'b0;
 8       end
 9     else
10       begin
11           row <= row3;//row3就是datain,这里延迟一个时钟
12         {a11,a12,a13} <= {a12,a13,row};
13         {a21,a22,a23} <= {a22,a23,row2};//row2是d_in
14         {a31,a32,a33} <= {a32,a33,row1};//row1是dataout
15       end
View Code

仿真图像如下图所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/danielwc/p/9053126.html