FPGA基础(verilog语言)——语法篇
2024-10-19 15:31:45
verilog语言简介
verilog语言是一种语法类似于c的语言,但是与c语言也有不同之处,比如:
1.verilog语言是并行的,每个always块都是同时执行,而c语言是顺序执行的
2.verilog又被称作硬件描述语言,在用verilog语言编程的时候,不如说是在用verilog描述一段电路,而c语言则是一段程序
verilog基本语法
本块只讲常用的基本语法,至于一些高级的语法到以后案例的时候会讲到
verilog文件.v基本结构
module a(b, c, d,...z);//module: 模块头 a:模块名 (b,c,d,...z):端口列表
input b;//输入声明
input wire c;//输入声明线网类型用wire,wire可省略
input wire [:] d;//[7:0]:输入总线位宽0~7所以是8bit总线
output e;//输出声明
output [:] f;//输出总线位宽说明,默认为wire类型,此处省略wire
output reg [:] f;//输出总线寄存器类型用reg
...//为了篇幅小一些省略e~y的声明,实际代码中不可省略
assign d = a & b;//assign语句也叫数据流建模语句也叫连续赋值语句,后面接的是组合逻辑
assign e = (f < g)? : ;//三目运算符 always @ (posedge a or negedge b or posedge c...)//always语句,posedge为上升沿触发,negedge为下降沿触发,后面接信号表示当这个信号上升沿或下降沿时执行下面的程序
begin //begin...end 相当于()
if(!b)//if语句
begin
h <= 'b0000;//非阻塞赋值语句用<=,4'b0000表示位宽为4,二进制表示的数0000
i <= 'haabbccdd;//此处表示32位宽,16进制表示的数aabbccdd
end else//else表示分支
case(j)//case语句
: k <= k + 'b1;//verilog中没有自加的表示,所以用k = k + 1'b1
: if(k<m) begin l <= 'd7;j <= 2; end// j <= 2表示下一个时钟沿触发后跳到2:语句
: m < = 'b0001 << 2;//<<移位符号
default: j <=; //default语句表示当j取值不是上面列出的0,1,2时走这条语句
endcase //case多路分支语句结束标志
end//整个always循环结束标志
endmodule//整个模块结束标志
就讲这么多,以后有具体的例子再细讲
最新文章
- opacity背景层透明导致文字也透明
- oracle计算时间秒数差
- 引入AOP 报错 error at ::0 formal unbound in pointcut
- 二维码相关工具Qrcode笔记
- 任正非:华为三十年大限快到了 想不死就得新生(建立战略预备队)cool
- http_load压力测试
- RxSwift 系列(五) -- Filtering and Conditional Operators
- sublime text2 安装及使用教程
- 剑指offer(java版)【转】
- 在th中显示图片
- Xcode 常用代码段
- 下拉列表 通过option 改变div的内容
- (注意格式,代替C++的getchar())汉字统计hdu2030
- Ball CodeForces - 12D (线段树)
- redis 频率限制
- git bash字体设置
- php优秀框架codeigniter学习系列——index.php
- 有关vuex的问题
- java 图片与文字生成PDF
- Nginx 解析PHP
热门文章
- 【RabbitMQ 实战指南】一 RabbitMQ入门
- jmeter基本组件介绍
- 在Spring Boot项目中使用Spock测试框架
- WPF_在APP.xaml应用资源样式
- Vue中Form表单验证无法消除验证问题
- windows服务参考
- 【暂时停更】Gungame更新下载平台
- [Flink]Flink1.6三种运行模式安装部署以及实现WordCount
- RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)
- 单点登录 - OAuth 2.0 授权码模式(一)