[爆卦]d型正反器verilog是什麼?優點缺點精華區懶人包

為什麼這篇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
pupucar:當然會有輸出 所以你要到第三個CLK才能取值 03/20 17:04
CompileUltra:前兩個是根據你的FF reset值出來的阿 錯的要mask起來 03/20 18:57
gm560622:瞭解了 謝謝! 03/20 20:01
gieks:flip-flop一般習慣用non-blocking assignment "<=" 03/21 23:09
gieks:btw, 你文中倒數第二行, "合成"在數位電路有特別的意思, 03/21 23:11
gieks:依你的文意應該是多個sub-module組合而成的意思吧XD 03/21 23:11
gm560622:剛起步學 不太懂>_< 感謝糾正^^ 03/22 00:23

你可能也想看看

搜尋相關網站