為什麼這篇d型正反器verilog鄉民發文收入到精華區:因為在d型正反器verilog這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者gm560622 (我不是娘泡)看板Electronics標題[問題] Direct form ...
請問各位高手
我下面寫的code是哪裡有問題呢?
是整合module的地方有錯不能這樣使用嗎
我是想要讓他能夠循序有訊號進去才會運作
可是照理講應該是3個clock完成
可是怎麼輸入的第一個正緣clock就有訊號輸出呢?
而且輸出的波型圖跟我預想的不太一樣
我附個圖:http://www.csie.ncu.edu.tw/~965002075/new_page_1
以下是我寫的code
module DF4_FIR_1(m2, n0, clk, reset); //Direct Form 4-tap FIR
output [15:0] m2;
input [3:0] n0;
input clk, reset;
wire [3:0] n0, n1, n2, n3; //input 包含所有D正反器output
wire [7:0] X0, X1, X2, X3; //所有經過乘法器之後的wire
wire [15:0] m0,m1,m2; //所有經過加法器的wire
//wire [3:0] A, B, C, D;
parameter A = 4'b0001, //給定4個常數 讓訊號通過乘法器能跟這些值相乘
B = 4'b0010,
C = 4'b0011,
D = 4'b0100;
multi multi0(X0,n0,A);
D_FF D_FF0(n1,n0,clk,reset);
multi multi1(X1,n1,B);
add add0(m0,X0,X1);
D_FF D_FF1(n2,n1,clk,reset);
multi multi2(X2,n2,C);
add add1(m1,m0,X2);
D_FF D_FF2(n3,n2,clk,reset);
multi multi3(X3,n3,D);
add add2(m2,m1,X3);
endmodule
module add(c, a, b); //加法器
output [15:0] c;
input [15:0] a, b;
wire [15:0] c;
assign c = a + b;
endmodule
module multi(x, y, z); //乘法器
output [7:0]x;
input [3:0] y, z;
wire [7:0] x;
assign x = y * z;
endmodule
module D_FF(q, d, clk, reset); //D型正反
output [3:0]q;
input [3:0]d;
input clk, reset;
reg [3:0]q;
always@(posedge clk)
begin
if(reset)
q = 4'b0000;
else
q = d;
end
endmodule
謝謝各位 因為我這種很多module合成真的不太懂
不知道能不能這樣用達到目的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.13.191