从今天开始终于要学习verilog语法啦~~学完我就得去整毕业设计了,,虽然verilog一直也学了点,但总觉得没什么系统性。打算用4月份把verilog学完,做点小实践,把毕业设计verilog部分大致过一遍。

一:数据类型,变量和基本运算符号

1:命名规则

  大小写敏感,X代表未知状态,Z代表高阻态

2:数字的表达

  <size>'<radix><value>,默认十进制

3:模块的新写法

  module Andor(

  output X,Y;

  input A,B,C

  )

  .......

  endmodule

4:数据类型

(1)register变量,存储数据,reg不是真正的flipflop,而是变量。

(2)vector变量,例如:wire[3:0] busA。

(3)integer/real,整型实型变量。

(4)time,my_time=$time ;//存放当前仿真时间

(5)数组array

  reg var[-15:16];//32bit的regs,与reg [-15:16] var不同

  reg [7:0] mem[0:1023] ;//1024 8-bit regs,看上去是二维的,但真正不是二维数组

  mem[10] = 8'b10101010

  不可一次取多个元素,如var[2:9]是不可以的,但reg [-15:16] var可以取var[2:9]。原因是数组的索引相当于地址,硬件无法一次读取多个地址。而vector索引相当于取位宽。不支持多维数组,如reg var[1:10] [1:100]是错误的。数组不能是real类型,如real r[1:10]是错误的。

(6) string

  reg [8*13:1] string_val; //可存放13个字符,每个字符8位

  string_val = "hello,verilog";//假如超过13个字符,则前面字符会被截断,采取低位先存。

5:操作符

(1)逻辑操作符  x&&0 = 0

(2)位操作符 ^(异或) ~^(同或)

(3)一目操作符

  a = 4'b1001;

  c = |a = 1|0|0|1 = 1

(4)移位操作符

(5)拼接操作符{}

  但必须指定size,b = 3'b010; catz = {b,1};这是错误的,1必须指定size

(6)等号操作符

  ==/!==/===/!==

  ===/!==包括对xz的判断,若用==/!=对含有xz的进行判断,则返回x。

6:算术运算符

  负数:reg [15:0] regA; regA = -4'd12;//存储的是2的16次方-12。

     integer intA; intA = -12/3; //存储的是-4

二:赋值语句

(1)连续赋值语句

  assign #del <id> = <expr>;//assign与wire配对

  放在module里面,不能在过程块里(always,initial);多个assign语句是并发的,执行顺序不相关;

(2)门级建模

  

  这些例化在module里,不能在procedure里面。

(3)行为级模块-过程块

  过程块里的code是顺序执行的,begin..end;

  

  包括initial与always块,initial只在仿真为0时执行一遍,不可综合,不可构建电路;always块在仿真为0时执行,执行多次,可综合,可构建电路。

(4)块语句block

  sequential:begin...end  顺序执行

  parallel:  fork...join 并行执行,不可综合,不可构建电路。

  

  begin...end与fork...join可相互嵌套。

  

  

(5)always块

  assign不可放在always语句里,always左侧变量必须是reg型。

  always @(敏感信号) ,敏感信号可以是电平信号也可以是触发沿信号。

(6)wait(expr)

  

  wait不可综合,用于仿真。

三:条件语句循环语句

(1)if语句,else语句要充分考虑多个情况,不然会形成latch。可综合

(2)case,可综合

  

(3)for循环,是否可综合取决于变量的循环是不是固定的

(4)while() begin ...end  不可综合

(5)repeat(times) stmt;不可综合

  

(6)forever 不可综合

  forever #10 clk = ~clk; //对时钟建模,生成clock,always也可产生时钟,但不专业。我们推荐用forever产生时钟。

转载于:https://www.cnblogs.com/xh13dream/p/8807188.html

verilog学习(1)基本语法相关推荐

  1. (13)Verilog程序结构-基本语法(一)(第3天)

    (13)Verilog程序结构-基本语法(一)(第3天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)Verilog程序结构-基本语法(一)(第3天) 5)技术 ...

  2. FPGA笔记之verilog语言(基础语法篇)

    文章目录 FPGA笔记之verilog语言(基础语法篇) 1. verilog 的基础结构 1.1 verilog设计的基本单元--module 1.2 module的使用 1.3 I/O的说明 1. ...

  3. Verilog学习之路(4)— Verilog HDL的程序设计语句

    Verilog HDL的程序设计语句 一.连续赋值语句 连续赋值语句通常用来描述组合逻辑电路,连续赋值的目标类型主要是标量线网和向量线网两种,标量线网如"wire a,b;",向量 ...

  4. verilog学习:一个简单的入门verilog例子

    前言 之前的文章<如何学习verilog,如何快速入门?>中提到了verilog学习,只想传输一个观点:刚开始学习的时候,建议直接通过视频学习,当您有收获时,再去查阅书籍,把它们当成工具书 ...

  5. Verilog初级教程(2)Verilog HDL的初级语法

    文章目录 前言 正文 注释 空格 操作符 数字格式 字符串 标识符 关键字 verilog修订 写在最后 前言 学习Verilog和学习任何一门编程语言一样,都需要从语法开始,不会语法去学习设计是几乎 ...

  6. verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第三章)

    <Verilog数字系统设计教程>夏宇闻 第三版思考题 答案合集 : Verilog学习系列 第三部分 1.模块由几个部分组成?   由描述接口和描述逻辑功能两部分组成. 2.端口分为几种 ...

  7. 我的 System Verilog 学习记录(1)

    引言 技多不压身,准备开始学一些 System Verilog 的东西,充实一下自己,这个专栏的博客就记录学习.找资源的一个过程,希望可以给后来者一些借鉴吧,IC找工作的都加把油! 本文是准备先简单介 ...

  8. Verilog学习脚印4-状态机(串口)

    Verilog学习脚印4-状态机(串口) 附:verilog语法笔记(持续更新ing) 目录 bash命令 串口协议简介(来自B站-北交李金城老师的PPT,侵删) 实例1:串口数据接收 电路原理(来自 ...

  9. Verilog学习脚印2-时序逻辑

    Verilog学习脚印2-时序逻辑 附:verilog语法笔记(持续更新ing) 目录 触发器基础 bash命令 实例1:计数器 电路原理(来自B站-北交李金城老师的PPT,侵删) 代码实现与验证 实 ...

  10. Verilog学习脚印3-简单状态机(三角波)

    Verilog学习脚印3-简单状态机(三角波) 附:verilog语法笔记(持续更新ing) 目录 bash命令 实例1:三角波发生器 电路原理(来自B站-北交李金城老师的PPT,侵删) 代码实现与验 ...

最新文章

  1. 将简历挂到云服务器网站上记
  2. LeetCode 21 ——合并两个有序链表
  3. springcloud、consul和Springboot的版本
  4. “换标”Intel的穷则思变
  5. 【LeetCode笔记】162. 寻找峰值(Java、二分、偏数学)
  6. 如何对待基金评审负面意见?
  7. Page.RegisterClientScriptBlock和Page.RegisterStartupScript有何区别
  8. 无心剑随感《爱心教育》
  9. java添加组件不显示不出来_java – jScrollPane无法添加组件
  10. isset,empty,is_null小知识
  11. centos6.5系统不支持 mysql_centos6.5系统下面MySql数据库的安装
  12. 将input file的选择的文件清空的两种解决方案
  13. 如何在Mac上恢复已删除或丢失的分区
  14. windows捕获串口数据_如何下载和安装用于Windows数据包捕获的Npcap库?
  15. 制作简易的幸运转盘抽奖
  16. C# 阿里云 短信api接口
  17. 计算机视觉 相机标定
  18. 字节跳动:雀魂启动!(Python语言实现)
  19. 又get到一个新markdown编辑器
  20. linux中ls命令查看文件大小与时间

热门文章

  1. java spring事务管理系统_Java Spring-事务管理概述
  2. CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)
  3. wsl2无法使用systemctl_Win 10 更新,Linux 内核的 WSL 2 开始上线
  4. ThinkPHP6项目基操(18.实战部分 表单令牌Token 防CSRF)
  5. 软考系统架构师笔记-最后知识点总结(二)
  6. Qt工作笔记-使用setFilterKeyColumn实现model的单行过滤
  7. Qt工作笔记-使用QFileSystemWatcher监控文件是否改变
  8. java题-如何递归遍历一个文件夹下的所有文件
  9. WEB安全基础-PHP相关
  10. 的写法_朋友圈文案标题的写法