实验原理:

在数字电路中可以根据电路功能的不同分为,组合逻辑电路与时序逻辑电路。

组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。

而时序逻辑从电路特征上看来,其特点为任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。

组合逻辑电路在电路结构上,不涉及对信号跳变沿的处理,无存储电路,也没有反馈电路,通常可以通过真值表的形式表达出来。

时序逻辑电路在电路结构上,不管输入如何变化,仅当时钟的沿(上升沿或下降沿)到达时,才有可能使输出发生变化。

译码器(Decoder)是一种多输入多输出的组合逻辑电路,负责将二进制代码翻译为特定的对象(如逻辑电平等),功能与编码器相反。译码器一般分为通用译码器和数字显示译码器两大类,本节设计的是通用译码器。

以三八译码器为例,即将 3 种输入状态翻译成 8 种输出状态, 在 MCU 应用中,如果需要保证一定的速度情况下实现此功能,一般选取外挂一片 74HC38 或者 74LS38 等独立芯片,但 FPGA 提供了一个完整的想象以及实现空间,仅靠其自身即可实现设计要求。

Verilog HDL实现

工程名称为:“DDC3_8”,架构图如下:

/
端口描述:
输入:a,b,c;
输出:out;
功能描述:三八译码器真值表
*

*/
代码实现可分为两部分,分别是端口列表定义和组合逻辑实现。

使用数据选择器来实现真值表功能,由于该处已经将case中的所有情况穷举,因此不用书写default。{}为位拼接操作符,always@()括号里为敏感信号列表。由于输出数据out需在always块中赋值,所以前面将out定义成reg型。

进行分析和综合无错误后查看RTL视角
RTL Viewer:

testbench文件编写

新建一个DDC3_8_tb.v文件,编写测试激励文件,整体代码如下,激励是不需要端口的,所有的信号自己内部产生,然后连接到需要测试的设计上。整体可分为四部分:时间单位定义,激励源定义,例化模块以及激励信号产生。

1.时间单位及精度

时标:`timescale 1ns/1ps

1) 前面的”`”是Esc键下面的键(和波浪线为同一键)。

2) “/”前面的1ns 为时间单位。

3) “/”后面的1ps为时间精度。

深入理解时标的意义:在激励中,有很多的 “# xx“,代表的意思是:延时xx ns。那么时间精度是什么呢?这个我们可以看看自己的存款余额,例如:100.21元。单位是:元,精度是:0.01元(也可以理解为:分)。对比一下,是不是一下子就理解了呢。但是,要注意,精度不能比单位大。

2.激励源定义

将设计的输入定义成reg的类型(在initial模块中赋值必须是reg类型),我们在激励当中对它们赋值,然后传输到设计当中。

将设计的输出定义成wire的类型,连接到设计的输出端口,在modelsim中查看输出波形是否正确。

3.例化模块

有两种例化模块方法,这里选用括号里信号顺序可以随意变更,不易出错。

4.激励信号产生

initial 模块是顺序执行的。我们通过延时将输入在不同的时间段赋不同的值。”1’b1”:前面的“1“代表1bit,”‘b“代表用二进制表示(这个” ’“是单引号,一定要和tiemscale的”“区分开),后面的”1“代表高电平。$stop 是仿真的停止命令,具体的意思:当运行这个地方的时候,仿真自动停止。

激励仿真

点击Assignment->setting->simulation,

按上图操作后,点击add后ok,保存。
点击RTL Simulation ,进行前仿真。


由上图可知仿真没有错误,关闭Modelsim。
点击Gate Level simulation进行仿真。


发现整体数据存在一定延迟现象,但功能依然符合设计要求。


序仿真局部波形放大 0ns 处和数据转换处,可看出,刚开始上电时由于输入数据需要等待一段时间才会到达输出端口,因此存在一定时间的未知态,并在0000_0001 到 0000_0010 转换中出现了0000_0011(也可能是 0000_0000)这一数据。这是由于门电路在上面两个状态转换中, 其实际转换过程为0000_0001→0000_0011→0000_0010 或者 0000_0001→0000_0000→0000_0010。对于转换过程中出现的错误数据只能在后期进行数据筛选而没有办法避免。

开发板烧录配置

FPGA组合逻辑训练-三八译码器相关推荐

  1. FPGA学习日志——三八译码器Decoder

    三八译码器 译码器:译码是编码的逆过程,其功能是将具有特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路称为译码器.如果有n个二进制选择线,则最多可译码转换成2n个数据 实验框图.真 ...

  2. 小梅哥Xilinx FPGA学习笔记2——三八译码器

    三八译码器 〇.功能介绍 1.功能描述 2.真值表 一.代码编写 1.设计文件 2.激励文件 3.仿真图 二.总结 三.课后作业 1.设计文件 2.激励文件 3.仿真图 〇.功能介绍 1.功能描述 译 ...

  3. (76)译码器与编码器(三八译码器)

    (76)译码器与编码器(三八译码器) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)译码器与编码器(三八译码器) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...

  4. (49)FPGA面试题2-4译码器实现

    1.1 FPGA面试题2-4译码器实现 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题2-4译码器实现: 5)结束语. 1.1.2 本节引言 " ...

  5. 硬件使用74hc138的C语言程序,单片机74HC138三八译码器的原理及应用方法

    描述 在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有32个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字 ...

  6. 74HC138三八译码器的应用

    在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有 32 个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字芯 ...

  7. 金沙滩51单片机74HC138 三八译码器的应用

    在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有 32 个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字芯 ...

  8. 【自学51单片机】3 -- 硬件基础知识(电容、三极管、74HC245、74HC138三八译码器)介绍和闪烁LED小灯

    目录 1.电磁干扰 2.电容介绍 3.三极管在数字电路中的应用 3.1.三极管介绍 3.2.三极管的原理 3.3.三极管的应用 4.74HC245介绍 4.1.74HC245引入 4.2.74HC24 ...

  9. c语言控制单片机38译码器,单片机中 74HC138 三八译码器的应用

    在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有32个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字芯片, ...

最新文章

  1. NDK crash栈信息的错误定位
  2. RedLock: 看完这篇文章后请不要有任何疑惑了
  3. 汇编: 用int中断改变ip,实现loop循环
  4. php一次性执行多条sql_PHP循环执行多条SQL
  5. 修改web.config
  6. windows下打开jenkins
  7. 2019-11-24转载Ganglia 安装和使用
  8. 五轮面试,阿里offer到手!!
  9. 洛谷1012 拼数
  10. 【程序员读书】读阮一峰最新作《未来世界的幸存者》有感
  11. matlab数学实验报告面积,MATLAB插值实验报告数学实验
  12. linux怎么设置文件访问权限,Linux文件和目录访问权限设置
  13. 图文演示戴尔win10重装系统步骤
  14. 西瓜书笔记16-2:逆强化学习
  15. 网卡驱动:传输超时watchdog_timeo/ndo_tx_timeout
  16. 我在CSDN参与的3000个帖子
  17. MT2523用户手册,MT2523设计指南资料
  18. 考研高数——积分中值定理证明
  19. 为VMware vSphere创建Ubuntu 18.04 Terraform模板
  20. 有没有好用的证件照生成器?教你一键生成证件照

热门文章

  1. java+epub+阅读器_java – 转到epub阅读器页面(PageTurner)
  2. 飞凌单片机解密_GX28E01单片机解密
  3. 芯片破解、解密方法介绍
  4. 前端下载svg格式图片
  5. 考勤登记管理系统(参考答案)
  6. 用python制作电子时钟包装_使用电子水墨屏和树莓派制作的时钟,Epaper_clock
  7. 单元测试chapter2
  8. 用*打印一个长方形.
  9. 多智能体强化学习:合作关系设定下的多智能体强化学习
  10. quickbuild php,通过与Quickbuild和Mist.io的持续集成实现云管理和使用监控