几个文件:
设计文件:design sources name.v文件
约束文件:constraints name.xdc文件
仿真文件、测试文件:simulation sources name_tb.v文件 为设计文件输入模拟信号
几个过程:
仿真(Simulation):检查逻辑功能是否正确
综合(Synthesis):是将RTL级电路( 由硬件语言描述的电路)转换到门级电路的过程。
完成一个工程步骤:
1. 新建工程--》将出现4个添加文件界面,在第一个界面新建或添加设计文件--》配置--》完成
如果是新建文件,则被新建的文件路径在
对于弹出的配置input output 的窗口,可忽视,在设计文件中直接写出。
2. 综合,选择Open Synathesized design,配置xdc文件并保存
设计文件输入时,接口输入后会有波浪线,在声明后才会消失。
仿真(测试)文件添加时,是并列的,输入内容调用设计文件后会自然变成有层次的结构。
3.仿真
4.综合
verilog语言
符号
%取余采用第一个数的符号。-10%7=-3
{}级联,将括号中的位拼在一起操作。{n{}}复制内括号n次并级联
数据类型
线网(net):最常用wire,连接,两端保持一致,不可存储
寄存器(register):在下次赋值前保持原值。integer类型是有符号数,reg是无符号数。有符号数赋值给无符号数,verilog自动完成补码运算。
参数(parameters):相当于宏定义,是常数.
net和register的主要区别在于能否存储。
模块
输入端口能由net、register驱动(实例化模块的端口),但输入端口只能声明为net(该模块内的声明)
输出端口可以是net、register类型,但只能驱动net。
上两句可概括为,在设计文件中,input只能声明为net,output可为register和net。
模块的实例化功能相当于C语言中的调用函数 eg:and(o,i1,i2);但是每个实例化都是模块的一个完全拷贝,并行执行,互不干扰。
verilog语言有三种描述形式:
结构型描述:调用and、or、not等模块
数据流型描述:使用assign关键字的描述
行为型描述:
fork join中使用<=并行执行
begin end 中使用=赋值顺序执行