本节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点。

二十进制编码器及Verilog HDL描述

二十进制编码器是数字电路中常用的电路单元,它的输入是代表0~9这10个输入端的状态信息。输入信号为高电平时,输出相应的BCD码,因此也称为10线4线编码器。其功能表及电路符号如图3-1所示。

图3-1 二十进制编码器

【例3-1】利用Verilog HDL对二十进制编码器进行设计。

Verilog HDL程序的基本构成

从例3-1可以看出,一个完整的Verilog HDL程序由3个基本部分构成,分别是:模块端口定义部分、信号类型说明部分和逻辑功能描述语句部分。其结构图如3-2所示。

图3-2 Verilog HDL程序基本结构

模块端口定义部分

对于硬件描述语言来说,一个程序代表了一个具有某种逻辑功能的电路,模块端口定义部分描述了该电路的接口部分的信息,即输入输出信号的信息。

模块端口定义部分的语法结构如下:

module模块名(端口信号1,端口信号2,端口信号3,端口信号4,……);

input[width:0]端口信号1,端口信号3,……;

output[width:0]端口信号2,端口信号4,……;

程序以关键词module引导,模块名是设计者对于设计的电路所取的名字,在模块端口定义的第1行列出了所有进出该电路模块的端口信号,在第2行和第3行中定义了各端口信号流动方向。流动方向包括输入(input)、输出(output)和双向(inout),[width:0]表示信号的位宽,如果位宽没有特别说明,则系统默认为1位宽度。

【例3-2】模块端口定义举例。

信号类型说明部分

在Verilog HDL语法中,信号共有两种数据类型,分别为:网线类型(net型)和寄存器类型(register型)。在信号类型说明部分除了要对输入/输出端口的信号类型进行说明之外,还要对程序中定义的中间量的数据类型进行说明。

信号类型说明部分的语法结构如下:

wire[width:0]信号1,信号2,……;

reg[width:0]信号3,信号4,……;

【例3-3】信号类型说明举例。

逻辑功能描述语句部分

逻辑功能描述语句部分对输入/输出信号之间的逻辑关系进行了描述,是Verilog HDL程序设计中最主要的部分,在电路上相当于器件的内部电路结构。在Verilog HDL语言中,常用的逻辑功能描述语句可以分为以下3种:

例化语句:调用已进行元件化封装的程序。这种语句常应用于层次化设计的顶层文件设计中。

【例3-4】例化语句举例。

该语句分别调用了一个非门和与门电路模块。

连续赋值语句:描述信号之间简单的赋值关系。在连续赋值语句中,右边表达式使用的操作数无论何时发生变化,右边表达式都重新计算。这类描述通常以关键词assign引导。

【例3-5】连续赋值语句举例。

该语句描述了输出信号与输入信号的赋值关系。

过程语句:以关键词always、initial等关键词引导的语句,描述了一定条件下信号之间的赋值关系。这种变量数据被赋值后,其值保持不变,直到下一次条件具备时对它们重新赋值。

【例3-6】过程语句举例。

本文转自小平头电子技术社区: https://www.xiaopingtou.cn/article-104211.html 嵌入式,物联网,硬件PCB,电子技术尽在小平头

与连续赋值语句一样,always和initial也描述了输出信号与输入信号的赋值关系,但是这种赋值往往是一种比较复杂的条件赋值,例如,例3-6就用了if……else语句描述了输出信号与输入信号的条件关系。

你知道Verilog HDL程序是如何构成的吗相关推荐

  1. Verilog HDL程序笔记2

    Verilog HDL程序笔记2 Verilog HDL程序笔记1:写出属于你的第一个Verilog HDL模块 文章目录 Verilog HDL程序笔记2 前言 一.如何测试模块? 1.仿真平台 2 ...

  2. fpga挂一片ddr2_FPGA控制DDR2 Verilog HDL程序代码

    //--------------------------------------------------------------------------- //--        文件名        ...

  3. 【Verilog HDL】设计硬件电路时,如何避免生成锁存器?

    这个问题很简单,前面的很多博文也多多少少提到了这个问题,(如:Verilog HDL 使用规范(一)),今天就系统地理一遍. Verilog HDL设计中容易犯的一个通病就是不正确使用语言,生成了并不 ...

  4. 通过仿真和综合认识T触发器(Verilog HDL语言描述T触发器)

    这个系列的博文已经写过了两篇,分别是通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)和通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器),分析的方法是完全并行 ...

  5. 通过仿真和综合认识JK触发器(Verilog HDL语言描述JK触发器)

    上篇博文写了用仿真和综合来认识D触发器(通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)),这篇博文采用完全并行的方式来认识JK触发器. 让我们迅速进入正题吧. J-K触发器的Ve ...

  6. 通过仿真和综合认识D触发器(Verilog HDL语言描述D触发器)

    目录 前言 硬件语言描述 测试文件 仿真图 综合工具综合后的原理图 综合介绍D触发器 维基百科介绍: 其他来源(课本): 8位的D触发器 Verilog HDL程序设计 测试文件: 仿真波形: 综合工 ...

  7. FIR滤波器设计(包括Verilog HDL设计以及MATLAB设计)

    FIR滤波器设计 滤波器原理:滤波器就是对特定的频率或者特定频率以外的频率进行消除的电路,被广泛用于通信系统和信号处理系统中.从功能角度,数字滤波器对输入离散信号的数字代码进行运算处理,以达到滤除频带 ...

  8. 简易数字频率计(verilog HDL设计)(2020维护版本)

    目录 前言 简易数字频率计原理 结语 前言 这篇博客大概是2017年写的,目前已经是2020年8月不到,今天维护了一下但是并未保存,很受伤,不得不重新在维护一次. 最近看到很多评论,说程序有问题,于是 ...

  9. Verilog HDL中容易生成锁存器的两种情况

    在Verilog HDL的程序设计中,有两种情况会生成锁存器. 第一种情况 在always块中使用if语句,但是没有else,这会导致当条件不成立时,没有其他语句可执行,使得被赋值的寄存器一直保持不变 ...

最新文章

  1. Spring MVC和JQuery用于Ajax表单验证
  2. git编译安装与常见问题解决
  3. java 多重压缩下载_Java 多文件边压缩边下载
  4. jdbc和mysql编程_MySql数据库与JDBC编程三
  5. 《手机测试Robotium实战教程》——第2章,第2.2节Eclipse的安装
  6. Java学习(二)Object
  7. 计算机如何建筑材料结合所学知识,《技术与设计2》第三、四单元综合测试卷...
  8. PyTorch学习(二):Transform
  9. 区块链行业被攻击怎么办?
  10. 如何在小程序中嵌入网页或者网站(web-view)?
  11. 数据库管理员、系统分析员、数据库设计人员,应用程序员的职责是什么?
  12. SNF快速开发平台MVC-表格单元格合并组件
  13. 北京办理互联网经营许可证(ICP证)的要求
  14. 微信小程序网络请求api中HTML格式问题
  15. 用计算机解决小学数学问题,小学数学学习中存在的问题和解决策略
  16. 如何才能通过一线互联网公司面试?下载量瞬秒百万
  17. 《Maven官方文档》Maven 开发
  18. 计算机网络的速率怎么计算,宽带速率对照表和计算方法
  19. git的使用和上传代码到gitee(码云) 教程
  20. 常用db与倍数的关系

热门文章

  1. 程序员们纷纷表示“内牛满面”-VS2010视频共5季
  2. 18天精读掌握《费曼物理学讲义卷一》 第10天 2019/6/26
  3. 2022年天梯赛题目解析
  4. python re 模块及正则表达式调用认识 (2)
  5. 并查集+字符排序-困兽之斗(乐视题)
  6. 阿里天蝎计划 服务器部署效率提升10倍
  7. 手把手让你实现开源企业级web高并发解决方案
  8. [改善脑力的23条方法]
  9. 大数据开发:大数据背景下的数据库选型
  10. Unity3D NGUI分离RGBA通道