当前位置: 首页 > java >正文

2-verilog-基础语法

verilog基础语法

1.逻辑值

Verilog语言扩展了二进制逻辑,包括"0"、“1”、"X"和"Z"四种状态。
"X"代表未知或不关心,在casex和casez条件中使用;
"Z"表示高阻状态,常用于三态总线建模。
在实际电路中,可能存在0、1和Z,亚稳态则是一种不稳定的状态。Verilog中,"X"和"Z"不区分大小写。

2.数字进制格式

Verilog数字进制格式包括二进制、八进制、十进制和十六进制。
一般常用的为二进制、十进制和十六进制。
二进制表示如下:4’b0111 表示4位二进制数字0111
十进制表示如下:4’d7 表示4位十进制数字7(二进制0111)
十六进制表示如下:4’hb 表示4位十六进制数字b(二进制1011)
16’b1000_1010_1010_1000 = 16’h8AA8

3.数据类型-reg型

reg寄存器,表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器的值,默认初始值为X不定值。
只能在always和initial语句中赋值。
如果是时序逻辑,always语句中带有时钟信号,则为触发器。
如果是组合逻辑,always不带时钟信号,则该寄存器为硬件连线。
列:reg [31:0] delay_cnt;
列:reg led_cnt;//没有给出位宽默认是1位

4.数据类型-wire型

wire线网类型,表示结构实体间的物理连线。
他不能存储值,他得值是由驱动他的元件所决定的。
经常用来表示以assign为关键字的组合逻辑信号.
如果没有驱动元件,则变量就是高阻的,Z。
列:wire key_in;

5.数据类型-参数型

参数就是一个常量,parameter定义。
类似于C语言的define
常用于状态机,数据位宽
提高程序的可读性
模块调用时,可以通过参数传递来改变被调用模块的参数值。
列:parameter usart_baud= 9600 ;

6.条件运算

a?b:c;//表示如果a为真,则选择b,否则选择c

7.运算符>> <<

右移运算
<<左移运算
两种运算都用0来填补移出的空位
左移时位宽增加,右移时位宽不变
4‘b1101<<2=6’b110100

8.拼接运算符

{a,b}//将a与b拼接起来。作为一个新的信号

9.算数运算符

±*/%^

10.关系运算符

< > != == >= <=

11.逻辑运算符

! && ||

http://www.xdnf.cn/news/16588.html

相关文章:

  • flask使用celery通过数据库定时
  • 【Linux我做主】探秘进程状态
  • Java中的有界队列和无界队列详解
  • CMake 目标文件后缀
  • react 项目怎么打断点
  • 大规模矩阵构建与高级算法应用
  • 【Linux篇】补充:消息队列和systemV信号量
  • 为什么分类任务偏爱交叉熵?MSE 为何折戟?
  • 【C++】判断语句
  • 网络数据传输与NAT技术的工作原理
  • 智能体安全与可信AI:防护机制与伦理考量
  • 代码随想录Day32:动态规划(斐波那契数、爬楼梯、使用最小花费爬楼梯)
  • 代码随想录算法训练营第三十三天
  • 力扣 之 最小覆盖子串(变长滑动窗口,越短越好)
  • 历史版本的vscode下载地址
  • 数据处理工具是做什么的?常见数据处理方法介绍
  • C++ 哈希算法、贪心算法
  • Android15广播ANR的源码流程分析
  • Linux系统Centos7 安装mysql5.7教程 和mysql的简单指令
  • rhel9.1配置本地源并设置开机自动挂载(适用于物理光驱的场景)
  • 在 Windows 系统 下直接使用了 Linux/macOS 的环境变量设置语法 PLATFORM=android
  • 图像处理第三篇:初级篇(续)—— 照明的理论知识
  • 问题大全【1】
  • Ansible提权sudo后执行报错
  • STM32——寄存器映射
  • Day22-二叉树的迭代遍历
  • NAS远程访问新解法:OMV与cpolar的技术协同价值
  • 浏览器安全演进:从裸指针到 raw_ptr 的实践与思考
  • QGIS基于规则的道路分级制图及Leaflet集成展示实例
  • 日志分析-windows日志分析base--笔记ing