verilog学习一
来源:互联网 发布:苹果电脑装windows系统 编辑:程序博客网 时间:2024/04/30 14:34
一
1.verilog是硬件描述语言,归根结底是一种语言。类比C语言,C语言是用来写程序,描述一个算法。而verilog是硬件描述语言,即用它写的代码描述了一个电路系统结构(门级互联的结构模块),这个电路系统实现了一定的电路功能(功能行为模块)。
2.用verilog硬件描述语言所建立的电路系统模型由若干个模块(子模块)组成。类比C语言中子程序。
3.verilog模块可以有几种不同表达方式:
(1)仅仅描述逻辑功能,不关心内部具体结构;
(2)描述逻辑表达式;
(3)描述电路结构(具体的与或非门电路),与具体的逻辑元件对应。
4.综合:上述由方式(1)通过方式(2)自动转换为方式(3)。
而方式(3)的描述与具体的元件相对应,因此容易转变成具体的电路布线结构。
5.实例化(实例引用):调用(原语)库中定义好的元件或模块。类比C语言中调用库函数。
6.系统设计人员只需要关注逻辑功能,不需要关注具体元件细节,因为通过综合可以转换,进而提高设计效率。
7.关于仿真和测试:有待理解。
二
1. 模块的结构:
module 模块名(口1,口2,口3,……); /*端口定义*/
input [信号位宽-1,:0] 端口名1; /*I/O说明*/
output [信号位宽-1:0] 端口名 2;
inout [信号位宽-1:0] 端口名3;
reg [width-1:0] R变量1; /* 内部信号说明*/
wire [width-1:0] W变量1;
assign a=b&c; /*功能定义*/
and #2 u1(q,a,b); /*assign常用来描述组合逻辑*/
always ……; /*always既可用来描述组合逻辑,也可描述时序逻辑*/
endmodule
2. 功能定义部分中:所有过程块(always块,initial块),连续赋值语句,实例引用是并行的(仿真一开始同时立即开始执行),与在模块中的顺序无关。initial语句只执行一次,always语句是不断重复活动着(只要满足条件就运行一次),直至仿真结束。
在always块中是顺序执行的。
3. 符号常量定义: parameter 参数名=数字;类比C语言中的宏定义。
符号常量常用于定义延迟时间和变量宽度。
4.变量:
wire型:网络数据类型,由门电路或assign指定的连续赋值语句驱动(姑且理解为连接线上的数据吧)。
reg型:寄存器数据类型,常用来表示always块内的指定信号,代表触发器(可以理解)。通过赋值语句可以改变reg型数据的值,其作用相当于改变触发器的存储单元的值。在always模块内被赋值的每一个信号都必须定义成reg型。
memory型:存储器型,reg型构造数组。
三
1.运算符:算术运算符,赋值运算符,关系运算符,逻辑运算符,条件运算符,位运算符,移位运算符,拼接运算符,缩减运算符。与C语言中基本一致。
2.非阻塞赋值:(b<=a),块结束后才完成赋值操作。(时序逻辑电路中触发器动作)
阻塞赋值:(b=a),语句执行完就已经赋值。
3.块语句
顺序块:begin……end,块内语句顺序执行。
并行块:fork……join,块内语句并行执行。
四
1条件语句:if三种形式,与C语言相同。只能用在过程块(always,initial)中的begin……end块中。
2.case,casez,casex语句:条件分支语句。(多路选择器)
为避免生成不必要的锁存器,if语句要加上else项,case语句要有default项。
3.循环语句
forever:常用于产生周期性的波形,用来作为仿真测试的信号,必须写在initial模块中。
repeat,while,for。
4.命名块的禁用:disable。
5.生成块
- Verilog学习笔记一
- verilog学习一
- 【笔记】verilog 学习笔记(一)
- Verilog、FPGA学习(一)
- Verilog HDL 学习(一)
- verilog学习笔记(一)
- FPGA学习之Verilog HDL 一
- Verilog学习笔记(一)语法
- FPGA从零开始-Verilog语法学习笔记(一)
- FPGA学习笔记(一)Verilog语法基础
- verilog算法小结(一)
- Verilog小叙(一)
- Verilog testbench总结(一)
- Welcome To Verilog (verilog 学习)
- Verilog学习笔记
- Verilog 学习日志
- 学习verilog一段时间 小结
- cpld的verilog学习
- WebService学习(一)
- Service层为什么要单例
- 常用开发工具及开源库
- 最新扫地机器人 性价比排行榜!
- [LWIP学习]--recv,recvfrom,recvmsg函数分析
- verilog学习一
- [LWIP学习]--connect函数分析
- [LWIP学习]--send,sendto,sendmsg函数分析
- link和@import有什么区别?
- ES6 —(Generator 函数的语法)
- mybatis插入数据后返回id
- 阿里云倾力扶持技术社区 CDN流量免费放送
- 关于微信小程序使用腾讯云服务器的一系列坑
- Hive插入数据