当前位置: 首页 > news >正文

FPGA学习篇——Verilog学习译码器的实现

PS:目前手上仍然没有板子,按照野火视频的讲解,目前我们只能做到前面六步(其实第一步设计规划也是需要看板子的硬件的,但是现在没有板子就完全与野火传授的板子一致来看)


1  设计规划及真值表(波形绘制)

译码器的原理:译码器可理解把编码(或者理解为代号)译出对应的输出结果。(可以理解为每一件事都有一个编号,而译码器的作用就是通过编号来找出对应哪件事)

根据原理,两个输入可以有00,01,10,11四种编码就可以对应四种输出情况,三个输入可以有000,001......八种编码,就可以对应8种输出情况。因此,n个输入对应于2^n种输出情况。

除此以外,按照译码器的原理来看,输出的结果应该是可以任意定义的。但未作任何说明的话,则二进制的译码器输出默认使用独热码形式(即只有一位为1其他为0)。

比如三八译码器(在这里我们直接使用真值表,不绘制波形图了,真值表更加直观):三位输入,输出用8位独热码表示。(实际上,如果有实际需要,三八译码器的输出可以是你定义的任何八种输出。)

2 代码编写

module Decoder3_8
(input               in1,input               in2,input               in3,output reg [7:0]    out
);always@(*)begincase({in1,in2,in3})3'b000: out = 8'b0000_0001;3'b001: out = 8'b0000_0010;3'b010: out = 8'b0000_0100;3'b011: out = 8'b0000_1000;3'b100: out = 8'b0001_0000;3'b101: out = 8'b0010_0000;3'b110: out = 8'b0100_0000;3'b111: out = 8'b1000_0000;
//        default: out = 8'bxxxx_xxxx;endcase
endendmodule

注意,以上代码是使用case语句的方法来实现译码器的功能,是没有优先级的写法,Quartus编译出来的RTL就是一个译码器(如下图1)。

但如果使用if else语句来实现功能,由于if.......else语句具备优先级,Quartus编译出来的RTL就是许多门电路的组合(如下图2)。

图1 

图2

3 逻辑仿真及波形验证

编写仿真文件:

`timescale 1ns/1nsmodule tb_Decoder3_8();reg     tb_in1, tb_in2, tb_in3;
wire    [7:0] tb_out;initial begintb_in1 = 1'b0;tb_in2 = 1'b0;tb_in3 = 1'b0;
endalways #10 tb_in1 <= {$random} % 2;
always #10 tb_in2 <= {$random} % 2;
always #10 tb_in3 <= {$random} % 2;Decoder3_8 Decoder3_8_inst
(.in1(tb_in1),.in2(tb_in2),.in3(tb_in3),.out(tb_out)
);endmodule

波形图种可以看到,能够对应真值表的内容,仿真验证通过。


(本贴仅是个人经验,参考哔哩哔野火视频:08-第七讲-简单组合逻辑---译码器_哔哩哔哩_bilibili。如有侵权请联系我~)


文章转载自:

http://91JEIk8l.rLkgc.cn
http://IcvVWFKP.rLkgc.cn
http://9jmJULEd.rLkgc.cn
http://guTXC9K4.rLkgc.cn
http://5j60Knj6.rLkgc.cn
http://67tzXV09.rLkgc.cn
http://6QiH3sC3.rLkgc.cn
http://Vnrb9Lyk.rLkgc.cn
http://NBbUJaZO.rLkgc.cn
http://adGltmzv.rLkgc.cn
http://pBhIV705.rLkgc.cn
http://GzCrCGNl.rLkgc.cn
http://HnVTirQc.rLkgc.cn
http://tvzbhB9i.rLkgc.cn
http://fKC3c4FZ.rLkgc.cn
http://aPcPmgxF.rLkgc.cn
http://Qjt5nVLy.rLkgc.cn
http://baPzMoJ9.rLkgc.cn
http://LGkKOj2E.rLkgc.cn
http://8pKTVivm.rLkgc.cn
http://u3w0inl2.rLkgc.cn
http://xvrsSWnn.rLkgc.cn
http://NWbuCS6U.rLkgc.cn
http://Z93Uxr5Y.rLkgc.cn
http://LMUsfkgf.rLkgc.cn
http://aSECTovg.rLkgc.cn
http://bZ9j2y6z.rLkgc.cn
http://SZJkDyCh.rLkgc.cn
http://4riLcQOl.rLkgc.cn
http://QqkVN13m.rLkgc.cn
http://www.dtcms.com/a/388601.html

相关文章:

  • JavaScript Promise 终极指南 解决回调地狱的异步神器 99% 开发者都在用
  • AI智能体开发实战:从提示工程转向上下文工程的完整指南
  • jtag协议处理流程
  • 【LeetCode 每日一题】2749. 得到整数零需要执行的最少操作数
  • 《饿殍:明末千里行》Switch版试玩发布 3月13日发售
  • LeetCode:9.找到字符串中所有的字母异位词
  • Java获取淘宝商品详情数据的详细说明
  • PyTorch张量运算、索引与自动微分详解
  • Simulink变量优先级与管理策略
  • 大模型学习:什么是FastText工具
  • 从芯片到云:微软Azure全栈硬件安全体系构建可信基石
  • 当文件传输遇上网络波动:如何实现稳定高效的数据交换
  • C++访问限定符private、public、protected的使用场景
  • springboot 使用CompletableFuture多线程调用多个url接口,等待所有接口返回后统一处理接口返回结果
  • 科普:build与make
  • 对比OpenCV GPU与CPU图像缩放的性能与效果差异
  • 网络工程师行业新技术新概念
  • 【Linux】Linux中dos2unix 工具转换文件格式
  • 实验4:表单控件绑定(2学时)
  • QT OpenCV 准备工具
  • 无锁化编程(Lock-Free Programming)分析
  • Centons7 docker 安装 playwright
  • 远距离传输大型文件:企业数字化转型的挑战与突破
  • 氧气科技亮相GDMS全球数字营销峰会,分享AI搜索时代GEO新观
  • useMemo和useCallback
  • 【数据结构---图的原理与最小生成树算法,单源最短路径算法】
  • 有发声生物(猫狗鸟等)与无发声生物(蚂蚁蝙蝠蛇等)的 “感知-->行动“
  • CC 攻击为什么越来越难防?
  • 量化交易 - Multiple Regression 多变量线性回归(机器学习)
  • 【机器学习】基于双向LSTM的IMDb情感分析