FPGA基础篇Verilog基础语法.docx
《FPGA基础篇Verilog基础语法.docx》由会员分享,可在线阅读,更多相关《FPGA基础篇Verilog基础语法.docx(5页珍藏版)》请在冰豆网上搜索。
FPGA基础篇Verilog基础语法
FPGA基础篇:
Verilog基础语法
Verilog基础语法
1.1可综合模块
以module为单元,具体实现如下
1.1.1时序逻辑
以异步触发的D触发器为例,时序逻辑在always块里实现
主要注意点:
1.声明模块时,输入变量一定是wire类型
2.声明模块时,输出变量可以是wire,也可以是reg,reg变量只能在always块中赋值
3.敏感列表既可以是边沿触发,也可以是电平触发
4.沿触发的逻辑里,一定采用的是非阻塞触发《=
1.1.2组合逻辑
以数据选择器为例,组合逻辑通常使用assign语句赋值
主要注意点:
1.sel=0时,c=a;sel=1时,c=b,即二选一数据选择器。
四选一则有两个选择端,四个输入端,八选一则是三个选择端,八个输入端。
2.wire变量一定要用连续赋值语句赋值,而且必须用阻塞赋值
1.2仿真模块
仿真模块和可综合模块的区别:
可综合模块最终生成的bit文件会烧录进芯片运行,而仿真模块编译过后是在仿真软件(例如modelsim)上运行的。
仿真模块是基于可综合模块进行例化,并通过仿真软件的模拟,可以初步验证我们写的可综合模块的实现现象。
以计数器为例,可综合模块如下:
基于以上可综合模块的仿真模块如下:
1.仿真的模块声明不需要输入列表
2.iniTIal块只能对【寄存器】量进行赋值
3.例化模块时,如果原始模块是输出变量,则括号内必须【wire变量】
HDL常见例子
2.1译码器
2.1.1可综合模块(case语句)
此模块用case实现了一个数据选择的功能,先产生了一个8位计数器,通过判断计数器的值来输出不同的取值,当计数器计数到1时,o_data和o_dv分别输出5和1,当计数器为2时,输出7和1,其余均输出0。
(Note:
Case语句常常运用于状态机中状态的判断)
Case语句注意点:
必须有default语句,否则会形成锁存器