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

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.lryc.cn/news/603843.html

相关文章:

  • Coze Studio概览(三)--智能体管理
  • sqli-labs通关笔记-第24关 SQL二次注入(单引号闭合)
  • 硬件学习笔记--73 电能表新旧精度等级对应关系
  • debug redis里面的lua脚本
  • Spring Boot 防重放攻击全面指南:原理、方案与最佳实践
  • ElasticSearch 的3种数据迁移方案
  • 在Word和WPS文字中把全角数字全部改为半角
  • Vue2学习-MVVM模型
  • Spring Boot 简单接口角色授权检查实现
  • C++入门知识学习(上)
  • 嵌入式学习日志(十一)
  • css3之三维变换详说
  • SQL Server中的分页查询
  • leetcode热题——螺旋矩阵
  • 第十一天:不定方程求解
  • 镁金属接骨螺钉注册检测:骨科植入安全的科学基石
  • Rust基础-part8-模式匹配、常见集合
  • 亚马逊 Vine 计划:评论生态重构与合规运营策略
  • 学习笔记-中华心法问答系统的性能提升
  • 小孙学变频学习笔记(十二)机械特性的调整 机械特性的改善
  • 想要批量提取视频背景音乐?FFmpeg 和转换器都安排上
  • Day 25:异常处理
  • VTK开发笔记(一):VTK介绍,Qt5.9.3+VS2017x64+VTK8.2编译
  • Zynq SOC FPGA嵌入式裸机设计和开发教程自学笔记:GPIO扩展与中断控制技术,万字详解!!
  • 车载刷写架构 --- 整车刷写中为何增加了ECU 队列刷写策略?
  • 服务器分布式的作用都有什么?
  • Windows下基于 SenseVoice模型的本地语音转文字工具
  • Ubuntu25.04轻量虚拟机Multipass使用Shell脚本自动创建并启动不同版本Ubuntu并复制文件
  • 【支持Ubuntu22】Ambari3.0.0+Bigtop3.2.0——Step1—基础环境准备
  • GaussDB 约束的语法