(未完成)Verilog相關課件
阿新 • • 發佈:2020-10-22
參考書:
《Verilog HDL數字積體電路高階程式設計》蔡覺平,西安電子科技大學出版社 2015
《Verilog HDL 高階數字設計》電子工業出版社,Michael D. Ciletti著,張雅綺譯,2008年.6
《Verilog HDL數字設計與綜合》電子工業出版社,Samir Palnitkar,夏宇聞等譯,2009.8
《VERILOG數字系統設計--RTL綜合.測試平臺與驗證》電子工業出版社, Zainalabedin Navabi,李廣軍等譯,2007
《硬體描述語言Verilog》 清華大學出版社,Thomas &Moorby,劉明業等譯,2001.8
01.很多綜合工具(如Quartus II)不允許邊沿變化訊號和電平變化訊號
always @(posedge clk , negedge rst ) //是正確的,可以被綜合。 always @(posedge clk , rst ) //是錯誤的,不可以被綜合。
02.流水線設計圖示:
03.流水線設計例項:
乘加器電路(無流水線):
程式碼:
module muti_add(clk,in1_a,in1_b,in2_a,in2_b,in3_a,in3_b,in4_a,in4_b,out); input clk; input [3:0] in1_a,in1_b,in2_a,in2_b,in3_a,in3_b,in4_a,in4_b;output [8:0] out; reg [8:0]out; reg [6:0] mult1,mult2,mult3,mult4; reg [7:0]adder1,adder2; always@(posedgeclk) begin multi1=in1_a*in1_b; multi2=in2_a*in2_b; multi3=in3_a*in3_b; multi4=in4_a*in4_b; adder1= multi1+multi2; adder2= multi3+multi4; out=adder1+adder2; end endmodule
乘加器電路改進(流水線):
程式碼:
modulemuti_add(clk,in1_a,in1_b,in2_a,in2_b,in3_a,in3_b,in4_a,in4_b,out); input clk; input [3:0] in1_a,in1_b,in2_a,in2_b,in3_a,in3_b,in4_a,in4_b; output [8:0] out; reg [8:0]out; reg [6:0]mult1,mult2,mult3,mult4; reg [7:0]adder1,adder2; always@(posedgeclk) begin multi1<=in1_a*in1_b; multi2<=in2_a*in2_b; multi3<=in3_a*in3_b; multi4<=in4_a*in4_b; adder1<= multi1+multi2; adder2<= multi3+multi4; out<=adder1+adder2; end endmodule
04.