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

FPGA学习(3)-38译码器实现

目录

1.38译码器概述

2.VIVADO步骤 

2.1创建工程,添加源文件

2.2添加仿真文件,并进行仿真

​2.3添加管脚约束

2.4生成bit文件 

2.5 烧录程序

3.实验结果 


1.38译码器概述

即三个输入A2A1A0,输出的十进制数,例如LHL(010)=2,即Y2非为低电平,其他都为高电平。等价于Y2为高电平,其他都为低电平。

2.VIVADO步骤 

2.1创建工程,添加源文件

decoder_3_8代码:

module decoder_3_8(A2,A1,A0,Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7
);input A2;
input A1;
input A0;
output Y0;
output Y1;
output Y2;
output Y3;
output Y4;
output Y5;
output Y6;
output Y7;
reg Y0; reg Y1; reg Y2; reg Y3;
reg Y4; reg Y5; reg Y6; reg Y7;
always@(*)begincase({A2,A1,A0})3'b000:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0001;3'b001:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0010;3'b010:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0100;3'b011:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_1000;3'b100:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0001_0000;3'b101:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0010_0000;3'b110:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0100_0000;3'b111:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b1000_0000;default:{Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 }= 8'b0000_0000;endcaseend  
endmodule

2.2添加仿真文件,并进行仿真

凡是always这种语句块中要修改值的信号一律用reg类型。为什么test bench不需要端口声明,因为在仿真里面已经形成了闭环,不需要输入输出。代码如下:

`timescale 1ns / 1psmodule decoder_3_8_tb( );
reg A2;reg A1;reg A0;
wire Y0; wire Y1; wire Y2; wire Y3;
wire Y4; wire Y5; wire Y6; wire Y7;
decoder_3_8 decoder_3_8_inst0(.A2(A2),.A1(A1),.A0(A0),.Y0(Y0),.Y1(Y1),.Y2(Y2),.Y3(Y3),.Y4(Y4),.Y5(Y5),.Y6(Y6),.Y7(Y7)
);
initial beginA2=0;A1=0;A0=0;#20;A2=0;A1=0;A0=1;#20;A2=0;A1=1;A0=0;#20;A2=0;A1=1;A0=1;#20;A2=1;A1=0;A0=0;#20;A2=1;A1=0;A0=1;#20;A2=1;A1=1;A0=0;#20;A2=1;A1=1;A0=1;#20;$stop;
end
endmodule

$stop的作用是停止仿真,不然会像二选1数据选择器仿真一样,后面仿真波形如下,与预期一致。

有时候这样看起很麻烦,直接将输入信号合成一个。

2.3添加管脚约束

在RTL ANALYSIS下添加I/O口。硬件上SW0~SW2,代表A0~A2,Y0~Y7代表LED0~LED1。

2.4生成bit文件 

点击 Generate Bitstream,等待右上角出现write_bitstream Complete

2.5 烧录程序

3.实验结果 

1.SW2,SW1,SW0=000,LED0灯亮,其他灯灭。

2.SW2,SW1,SW0=110=6,LED6亮,其他灯灭。


http://www.mrgr.cn/news/37673.html

相关文章:

  • WEB3.0是什么?
  • [element-ui]记录对el-table表头样式的一些处理
  • 【SQLite】sqlite | insert插入存在即更新
  • 【C#生态园】解锁C#开发新姿势:探秘六大Word处理库功能对比
  • 初学者教程:如何使用谷歌云API
  • Kubernetes深入详解(一)
  • 【linux】linux中如何通过Logstash处理、结合logrotate分割日志
  • 在深度学习训练过程中模型为什么会学习到捷径
  • 如何向远程仓库上传项目
  • Python教程:类调用实例方法
  • 大屏走马灯与echarts图表柱状图饼图开发小结
  • leetcode力扣刷题系列——每种字符至少取 K 个
  • 面试中如何做自我介绍
  • 完美解决Ubuntu下vi编辑器方向键变字母的问题
  • 聊聊不同的理由展现不同的人格
  • MySQL—索引机制详解
  • HAL+M4学习记录_2
  • 从零开始Ubuntu24.04上Docker构建自动化部署(三)Docker安装Nginx
  • 如何保护自己电脑以及服务器的ip地址
  • MySql在更新操作时引入“两阶段提交”的必要性