译码器 [小脚丫STEP开源社区]

您所在的位置:网站首页 十六进制译码器芯片 译码器 [小脚丫STEP开源社区]

译码器 [小脚丫STEP开源社区]

2024-07-10 19:10| 来源: 网络整理| 查看: 265

38译码器 ====硬件平台==== STEP-MXO2第一代 STEP-Baseboard ====设计要求==== 掌握38译码器的基本原理 掌握组合逻辑的设计 掌握case的基本语法 使用拨码开关实现译码器输入功能 基于小脚丫STEP FPGA Base Board开发平台拨码开关输入,LED输出实现38译码器功能 ====工作原理==== ===38译码器原理===

译码器的逻辑功能是将每个输入的二进制代码译成对应的输出高、低电平信号或另外一个代码。

38译码器由三路信号输入,八路信号输出的译码器(2^3 = 8)。

以芯片74HC138为例:

由上图芯片使能由E1,E2,E3共同控制

三路信号输入:A0,A1,A2

八路信号输出:Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7

====硬件连接====

结合74HC138的结构原理及实验平台STEP-Baseboard的硬件配置,我们使用:

一个拨码开关(S5)替代E1、E2和E3的逻辑运算结果,作为芯片使能管脚 三个拨码开关(S1、S2、S3)作为38译码器的三路信号输入管脚 八个LED灯作为38译码器的八路信号输出管脚

====代码设计==== 设计文件

通过38译码器的原理及程序设计框图,我们不难发现这是一个比较简单的组合逻辑设计。

正如我们在原理及硬件连接中描述的,我们需要一路芯片使能端口、三路信号输入端口和八路信号输出端口。模块端口设计如下:

module Decode38 ( input Enable, input [2:0] A_in, output reg [7:0] Y_out );

逻辑部分,当芯片使能信号无效时,输出全部置高,当芯片使能信号有效时,根据三路信号的输入状态译码控制八路信号输出。

always@(A_in or Enable) begin if (Enable) case (A_in) 3'b000: Y_out = 8'b11111110; 3'b001: Y_out = 8'b11111101; 3'b010: Y_out = 8'b11111011; 3'b011: Y_out = 8'b11110111; 3'b100: Y_out = 8'b11101111; 3'b101: Y_out = 8'b11011111; 3'b110: Y_out = 8'b10111111; 3'b111: Y_out = 8'b01111111; default:Y_out = 8'b11111111; endcase else Y_out = 8'b11111111; end 测试文件

测试文件中,我们要生成被测文件输入信号需要的激励,我们设计Enable信号每隔200ns(200个时间单位)进行翻转,三路信号输入为每20ns取随机值($random)。

reg Enable; reg [2:0] A_in; initial begin Enable = 1'b0; A_in = 3'b000; end   always Enable = #200 ~Enable; always A_in = #20 $random;

引脚分配如下:

管脚名称 Enable Ain[0]| Ain[1] Ain[2] | Yout[0] Yout[1] |Yout[2] Yout[3] |Yout[4] Yout[5] |Yout[6] Y_out[7] FPGA管脚 P12 M13 M14 N13 B14 C14 E14 F14 G14 J14 K14 L14 仿真结果

资源报告 资源 数量 比例 说明 LUTs 8 1% 寄存器 0 0% 存储器 0 0% IO管脚 12 时钟频率 25MHz 知识点 组合逻辑 参考文档 Lattice MachXO2数据手册 相关文档 文件名称 功能 Decode38.v 38译码器 Decode38_test.v 测试文件


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3