1.Verilog代码结构

一般在一个.V文件里面 只写一个module

每个模块只实现特定单一的内容,然后把模块组装起来,完成一个复杂的数字电路系统。
module的优点:
1.将系统分成多个module,降低设计难度。
2.利于团队协作。
3.有利于bug的解决。
4.分而治之,逐个击破。
2.module模块编写





3.模块的参数(全局与局部)
模块可以定又参数,参数的意又就是可以根据不同需要配置不同的参数,提高模块的复用性。
关于参数的定义有多种方式,首先我们来看全局参数的定义



4.变量reg与wire的用法和区别







module Ex4#(
parameter p0 = 0
)(
input i_clk ,
input i_rst ,
input a ,
output b
)
reg r_a1 ;
reg [7 :0] r_a2 ;
reg [15:0] r_a3,r_a4 ;
reg [15:0] r_a5 ;
wire w_b1 ;
wire [7 :0] w_b2 ;
wire [15:0] w_b3,w_b4 ;
wire [15:0] w_b5 ;
wire [15:0] w_b6 ;
assign w_b1 = r_a1 ;
assign w_b2 = r_a2 ;
assign w_b3 = r_a3 ;
assign w_b4 = r_a4 ;
assign w_b5 = w_b3 & w_b4 ;
assign w_b6 = r_a3 & r_a4 ;
always@(posedge i_clk,posedge i_rst)
begin
r_a1 <= a;
r_a2 <= 8'd1;
r_a3 <= 16'h2;
r_a4 <= 'd3;
end
always@(*)
begin
r_a5 <= r_a3 & r_a4;
end
endmodule
5.时序逻辑与组合逻辑




6.if分支语句


7.case选择语句

8.常用的运算符与优先级



9.顶层与module例化调用




