verilog
Quartus
使用—全加器
原理图方式(而输入或门)
然后完成一个2选1的原理图
然后点击new选择University Program VWF
将其全部移入
选择器件然后点击设置时间。
用verilog进行电路设计
右击选择Insert Template
!!Verilog HDL要求module描述的实例名称必须与储存文件名一致,我们将程序性稍做修改
1 | // Quartus II Verilog Template |
Verilog HDL程序是以module为基本单位的,形式上以$module
$开头,以$endmodule$结尾,模块名称$name$可以由设计者自定,并要求和文件存储名称一致。 $module
$和$endmodule$之间成为 模块实体
,其包括输入输出端口及数据类型描述,接下来是实际语句体描述。输入输出端口数据名称和类型的描述,要放在模块名称后面,并且用括号括起来。输入/输出/双向端口变量描述一般以如下形式,不同端口之间要用逗号
,
隔开1
2
3
4
5//input 变量宽度 变量名称
input signed [WIDTH-1:0] dataa,
//output 变量宽度 变量名称
output reg [WIDTH:0] result
//bidir 变量宽度 变量名称Verilog HDL中主要有两种类型
导线型
$wire$和寄存器型
$reg$。在端口变量描述中$wire$可以省略。各种类型容纳变量都是容纳的二进制数,他们能够纳二进制数的位数称之为
线宽
1
//例如[7:0],表示有8位宽度的向量,内部的二进制数或存放二进制数的位置编号是7,6,5,4,3,2,1,0
形参要用parameter保留字来定义,形式为:$parameter 形参名称 = 常数$,大多数情况下形参都用大写字母来表示
$lways @ (posedge clk)$是一个结构体语句的头,有多个语句时要用$begin … end$语句括起来,其代表只要clk上升沿到来,该$begin … end$语句体的内容就会被执行一遍。always语句括号内的变量成为敏感变量,多个敏感变量同时存在,用
or
或者,
分开。$posedge$和$negedge$必须在每个敏感变量之前修饰,如果下降沿有效则用$negedge$修饰。$always$中的语句都是按顺序执行的。
这个Add_Sub程序中设计了一个16位的加减法运算器,输入输出端口有两个16位的数据导线$dataa$和$datab$一个时钟输入导线$clk$,一个控制选择加减法运算的导线Sub,输出端口是一个16位的寄存器$result$。每当时钟上升沿到来的时刻,依据Sub为0还是1进行加法或者减法运算,并且将结果送到$result$寄存器。