【FPGA】三八译码器——Verilog实现

一、三八译码器

三八译码器,核心功能是通过三个输入端口控制八个输出端口

八位中每次有且仅有一位是高电平,无法实现有两位及两位以上的端口同时输出低电平

二、Verilog输入

1.创建新工程

点击Next

输入工程文件名,选择好保存路径,点击Next

选择第一个并勾选选项,点击Next

选择好芯片型号后,点击Next

点击Finish

2.设计定义

设计定义就是实现了上面介绍的三八译码器功能,所以这里的设计定义可以忽略,这是已经被定义好的典型功能。

3.设计输入

这里仍使用Verilog语言来进行,也就是用HDL来设计。

先创建一个Verilog源文件

点击加号+或组合键Alt+A

选第二个,点击Next

点击Create File

输入文件名称,点击OK

接着点击Finish

点击OK,点击Yes

打开创建好的文件,删除所有内容

4.程序编写

输入moduleendmodule

输入模块名称

写入端口列表(括号后要有分号,每个端口写完用逗号隔开)

定义端口类型(复制端口列表中的所有端口,粘贴,定义类型后还需将逗号均改为分号)

描述三八译码器的输入和输出逻辑关系

按照上述真值表中的内容,用Verilog语言进行描述
注意:在真值表中的输出端口是经过取非的,而刚才定义的八个输出信号没有经过取反,所以这里写的代码与真值表的三八译码器芯片输出的电平是相反的

always@(*)过程赋值语句的声明
"一切"表示后续的赋值语句中所有需要进行判断的信号,例如代码中的A2,A1,A0
A2,A1,A0都是单比特信号,即一位的信号,该信号能够表示的值是0或1
(在Verilog中 8'h5e 与C语言中的0x5e是同一个意思,但在数据类型的表示方式上有细微的区别,C语言用0x表示16进制数,Verilog用 'h 来表示,另外,Verilog在表示数据时,可以在类型前面加上一个数字来表示该数据占多少位宽)
位拼接,{A2,A1,A0}代表将A2,A1,A0的值按照从左到右的顺序依次拼接,得到一个新的三位位宽的信号
case 表示判断,判断括号里内容的值是多少,该代码中列出了八种情况,每个情况后面跟着一个冒号,冒号后面的内容是该情况下需要执行的具体操作,也就是赋值,这里也使用了位拼接的语法,占位符_是为了使代码更容易读懂,没有实际意义
case结束后需要有endcase 表示该语法块的结束
如果代码中没有将case括号中的所有可能出现的值全部列举出来,则还需要使用一个default来指明,在未列举出来的情况下,被赋值对象应该为什么值,避免程序因为时序异常出现未列举出的值的情况时,将被赋值对象赋上不可预料的值

在Verilog中用什么进制来表示一个数并不会改变这个值本身的内容,具体使用哪种表示方式需要根据实际情况而定

这里出现的错误是说,在always块中向非寄存器类型reg型 的信号上赋值是语法所不允许的

也就是说对Y0到Y7在过程赋值语句中赋值了,这些信号就必须被定义为reg类型

凡是在包括always这种过程块中语句中被赋值的信号都需要定义为reg类型

直接在端口定义时,在output后加reg 就可以了

5.对设计进行分析

点击Open Elaborated Design

点击OK

打开Schematic

可以看到所生成的三八译码器不像二选一多路器能够看到一个典型的二选一多路器的数字逻辑模型,这是因为二选一多路器属于数字逻辑电路中的基本单元,而三八译码器更为复杂,软件本身是没有三八译码器模型的,所以只能将三八译码器分解后再进行显示。

相关推荐
珞光电子USRP SDR软件无线电平台9 小时前
打破通用瓶颈:珞光电子发布 Luowave Driver V2 定制化驱动方案
fpga开发
9527华安9 小时前
FPGA实现PCIe数据通信培训课程,提供工程源码+视频教程+FPGA开发板
fpga开发·pcie·视频教程·培训
my_daling9 小时前
FPGA实现IIC主机读写,以及部分IIC传感器控制流程
fpga开发
乌恩大侠10 小时前
【AI-RAN】在空ubuntu服务器安装环境和生成TV,高达430G文件
服务器·人工智能·ubuntu·fpga开发·o-ru
qq_1508419911 小时前
高云FPGA固件下载速成
fpga开发
一个平凡而乐于分享的小比特11 小时前
一文读懂MCU与FPGA:核心区别、协同之道与双修秘籍
单片机·fpga开发·职场发展·mcu开发
LCMICRO-1331084774615 小时前
长芯微LD1871完全P2P替代AD1871,是一款立体声音频ADC
单片机·嵌入式硬件·fpga开发·音视频·硬件工程·dsp开发·音频adc
木心术116 小时前
AI在FPGA中实现多平台射频信号时隙调整参考及案例
人工智能·fpga开发·信息与通信
LCMICRO-1331084774616 小时前
长芯微LD73360完全P2P替代AD73360,是一款工业电能计量6通道模拟输入前端(AFE) 处理器
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模拟前端afe
zjxtxdy1 天前
STM32开发
stm32·单片机·fpga开发