(未完成)Verilog相关课件

参考书:

《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

乘加器电路改进(流水线):

 代码:

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

04.

原文地址:https://www.cnblogs.com/kraken7/p/13833125.html