OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7355|回复: 0

【FPGA开源教程连载】第二章 组合逻辑电路之译码器

[复制链接]

58

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2016-12-14
在线时间
44 小时
发表于 2016-12-20 18:36:18 | 显示全部楼层 |阅读模式
本帖最后由 芯航线跑堂 于 2016-12-20 19:09 编辑

组合逻辑电路设计之译码器


课程目标: 1. 再次熟悉Quartus II工程的建立以及完整的FPGA开发流程
                2. 以译码器为例学会简单组合逻辑电路设计
实验平台:无
实验原理:
      组合逻辑,其任一时刻的稳态输出,仅仅与该时刻的输入变量的取值有关,而与该时刻以前的输入变量取值无关。这种电路跟时序逻辑电路相反,时序逻辑电路的输出结果是依照目前的输入和先前的输入。从电路结构分析,组合电路由各种逻辑门组成,网络中无记忆元件,也无反馈线。与组合逻辑对应的就是时序逻辑,时序逻辑将在下一讲详细描述。
      译码器(Decoder)是一种多输入多输出的组合逻辑电路,负责将二进制代码翻译为特定的对象(如逻辑电平等),功能与编码器相反。译码器一般分为通用译码器和数字显示译码器两大类。本节设计的是通用译码器,数字显示译码器会在后面数码管章节中涉及。
以三八译码器为例,即将3种输入翻译成8种输出状态,其真值表如表3-1所示,其中ABC为数据输入,OUT为输出数据。
图片1.jpg
3-1 3-8译码器真值表
实验步骤:
按照02章所讲,建立工程子文件夹后,新建一个以名为my3_8的工程保存在prj下,并在本工程目录的rtl文件夹下新建verilog file文件在此文件下输入以下内容并以my3_8.v保存。由于此处已经将case中的所有情况穷举,因此可以不用书写defalut。{}为位拼接操作符,always@()括号内为敏感信号列表。  
图片2.jpg
图片3.jpg
         
进行分析和综合直至没有错误以及警告。
      为了测试仿真编写测试激励文件,新建my3_8_tb.v文件保存到testbench文件夹下,输入以下内容再次进行分析和综合直至没有错误以及警告。

图片4.jpg
图片5.jpg
图片6.jpg
         设置好仿真脚本后进行功能仿真,可以看到如图3-1所示的波形文件,可以分析得出符合既定的设计要求。至此功能仿真结束。
图片7.jpg
3-1 功能仿真波形
       进行全编译来实现布局布线,再进行后仿真也就是时序仿真。这是点击RTL viewer,可以看到图3-2的电路结构,可以看出符合预期目的。
图片8.jpg
3-2 3-8译码器RTL视图
在图3-3中可以观察发现整体数据均存在一定的延迟现象。
图片9.jpg
3-3 时序仿真波形
放大0ns处在图3-4可以看出,刚开始上电时由于输入数据需要等待一段时间才会到达输出端口,因此存在一定时间的未知态,并在0000_0001到0000_0010转换中出现了0000_0011这一数据。这是由于门电路在上面两个状态转换中,启实际转换过程为0000_0001---0000_0011---0000_0010或者0000_0001---0000_0000---0000_0010。对于转换过程中出现的错误数据只能在后期进行数据筛选而没有办法避免。
图片10.jpg
3-4 局部放大波形
       至此,就完成了一个基本的组合逻辑,3-8译码器的设计。请以此为基础自行设计4-16译码器或者更高位数译码器,并进行仿真。

小梅哥
芯航线电子工作室

class3_38.rar

259.61 KB, 下载次数: 215

第二章_组合逻辑电路之译码器.pdf

806.23 KB, 下载次数: 194

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表