Verilog笔记 一天一夜速成

Verilog笔记
assign语句 always语句 底层模块调用语句

module endmodule是每个程序都必备的,代表我们创建了一个模块和结束一个模块的创建。既然创建了模块,那么这个模块必然有模块名,以及参数,还有中间的各种语句。参数有输入参数、输出参数等,以及reg、wire类型;语句有assign语句(只对wire变量操作)、always@语句(只对reg变量操作)等。

Verilog笔记 一天一夜速成_第1张图片

例:我们规定了一个模块名DFF1(输入输出变量CLK,D,Q);Q为输出变量,CLK、D为输入变量,同时Q是reg类型;我们编写always@语句(当CLK上升沿触发时,D赋值给Q);模块结束。(always@语句的操作对象必须是reg类型,由于不定义默认是wire类型,所以我们让输出定义为reg类型。)注:输入参数必须是wire类型,与always@语句无关。

Verilog笔记 一天一夜速成_第2张图片

模块名(输入输出变量名);输入输出变量定义(包括数据类型定义);中间参数定义;各种语句

Verilog笔记 一天一夜速成_第3张图片

模块名全加器(输入输出参数);输入参数都是四位[3:0];输出参数四位reg类型;输出参数一位wire类型 Verilog笔记 一天一夜速成_第4张图片

assign连续赋值语句,只能对wire变量操作,当变量值变化的时候assign赋值的值立即变化

Verilog笔记 一天一夜速成_第5张图片

或门的结果与门 Verilog笔记 一天一夜速成_第6张图片

a为真则Y=b,a为假则Y=c Verilog笔记 一天一夜速成_第7张图片

always@(触发条件);语句

Verilog笔记 一天一夜速成_第8张图片

always@(a,b,c) 当其中有一个数发生变化时则执行以下语句

Verilog笔记 一天一夜速成_第9张图片 

 

always@语句在多行语句时需要加上begin end;建议都加上。赋值语句的左侧必须是reg类型。当RST=0的时候Q=0;当EN=1的时候Q=D 

Verilog笔记 一天一夜速成_第10张图片 

Verilog笔记 一天一夜速成_第11张图片=赋值语句从上往下串行执行;<=语句并行执行 

Verilog笔记 一天一夜速成_第12张图片时序逻辑电路建议使用<=语句 

Verilog笔记 一天一夜速成_第13张图片 

Verilog笔记 一天一夜速成_第14张图片 

Verilog笔记 一天一夜速成_第15张图片先自己创建一个模块D触发器,命名为DFF;再创建一个大的模块,调用封装好的D触发器:DFF 触发器的新名字(.原参数名(现参数名),.原参数名(现参数名)) 

Verilog笔记 一天一夜速成_第16张图片 

Verilog笔记 一天一夜速成_第17张图片case(变量s0和s1的拼接);如果等于2位的无符号数00那么执行y=a;... 

Verilog笔记 一天一夜速成_第18张图片 

 

Verilog笔记 一天一夜速成_第19张图片 

 

你可能感兴趣的:(fpga开发)