基于FPGA的16-4编码译码电路设计

实验一 基于FPGA的16-4编码译码电路设计

一、 实验目的

  • 将数字逻辑中优先编码器、七段显示译码器、二进制码/ BCD码转换等相关知识结合起来,实现一个功能较简单、又有一定趣味性的项目。培养学生的实践动手能力。
  • 能够掌握数字系统层次化设计方法;
  • 能够使用Verilog HDL、EDA软件工具进行电路的辅助分析和设计,并使用FPGA器件进行实现和验证。
  • 实现方法具有多样性,实验内容能够逐层次递进。
  • 通过课堂实验和课外开放实验相结合的方式,训练学生动手能力,激发学生创新意识。

二、 实验任务及要求

基本要求:

  • 设计一个简单的8线-3线编码、译码显示电路,要求将开关的状态用发光二极管显示出来,在共阳极显示器上显示其编码值(十进制数)。采用层次化方法进行设计。
  • 8线-3线优先编码器的功能表如下。
    在这里插入图片描述

提高要求:

  • 实例引用8线-3线编码器子模块两次,构成16线-4线优先编码器,并在两位数码显示器上显示其编码值(十进制数)。

三、 设计分析(组成框图、工作原理等)

工作原理:

  • 编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。
  • 译码是将具有特定含义的二进制码转换成对应的输出信号,具有译码功能的逻辑电路称为译码器。译码器分为两种类型,一种是将一系列代码转换成与之一一对应的有效信号。这种译码器可称为二进制译码器或唯一地址译码器,它常用于计算机中对存储器单元地址的译码,即将每一个地址代码转换成一个有效信号,从而选中对应的单元。另一种是将一种代码转换成另一种代码,所以也称为代码变换器。例如BCD至七段显示译码器执行的动作就是把一个4位BCD码转换成为七段码输出,以便在七段显示器上显示出这个十进制数。

组成框图:

在这里插入图片描述

  • 16线-4线优先编码器,并在两位数码显示器上显示其编码值(十进制数)。
    在这里插入图片描述

四、 逻辑设计(各子模块设计、源代码及注释、仿真代码及波形等)

STEP1: 8-3编码器设计与代码

// encode83
module encoder83(
input [7:0]I,
input EI,
output reg [2:0]Y,
output wire GS
);

assign GS = (|I)& EI;

always @(*) begin
if(EI)
   casez(I)
   	8'b1???????: Y <= 3'b111;
   	8'b01??????: Y <= 3'b110;
   	8'b001?????: Y <= 3'b101;
   	8'b0001????: Y <= 3'b100;
   	8'b00001???: Y <= 3'b011;
   	8'b000001??: Y <= 3'b010;
   	8'b0000001?: Y <= 3'b001;
   	8'b00000001: Y <= 3'b000;
   endcase
if(!GS)
   Y <= 3'b000;
end

endmodule

STEP2: 16-4编码器设计与代码

将两个8-3编码器如下图巧妙级联就可以实现16-4编码器。在这里插入图片描述

// encoder164
module encoder164(
input[15:0] I,
input EI,
output wire GS,
output wire[3:0] Y
);

wire[2:0] YL, YH;
wire GSL, GSH;
encoder83(I[15:8], EI, YH, GSH);
encoder83(I[7:0], (!GSH)&EI, YL, GSL);//级联关键操作
assign GS = GSL|GSH;
assign Y[0] = YL[0]|YH[0];
assign Y[1] = YL[1]|YH[1];
assign Y[2] = YL[2]|YH[2];
assign Y[3] = GSH;

endmodule

STEP3: 四位二进制转十进制下十位上BCD和个位上BCD

因为四位二进制最大会成为两位十进制数,因此我们需要使用两个七段显示译码器,这也意味着我们要将四位二进数直接转化成为两个BCD码,分别对应十位上的数值和个位上的数值。

// BCD 四位二进制转十进制下十位上BCD和个位上BCD
input [3:0]Y,
input EI,
output wire[7:0] D
);

integer i;
reg[3:0] D0, D1;
assign D[7:4] = D1;
assign D[3:0] = D0;

always@(Y)begin
   D0 = 4'd0;
   D1 = 4'd0;
   if(EI)
   	for(i = 3; i >= 0; i = i-1)begin
   		if(D0 > 4'd4)
   			D0 = D0 + 4'd3;
   		if(D1 > 4'd4)
   			D1 = D1 + 4'd3;
   		D1 = D1 << 1;
   		D1[0] = D0[3];
   		D0 = D0 << 1;
   		D0[0] = Y[i];
   	end
   else begin
   	D0 <= 4'd0;
   	D1 <= 4'd0;
   end
end

endmodule

STEP4: BCD至七段显示译码器

//
`timescale 1ns/1ns
module seg7displaybcd(
input[3:0] D,
input EI,
output reg[0:6] H
);

always@(D) begin
   if(EI)
   	case(D)
   		4'b0000: H <= 7'b0000001;
   		4'b0001: H <= 7'b1001111;
   		4'b0010: H <= 7'b0010010;
   		4'b0011: H <= 7'b0000110;
   		4'b0100: H <= 7'b1001100;
   		4'b0101: H <= 7'b0100100;
   		4'b0110: H <= 7'b0100000;
   		4'b0111: H <= 7'b0001111;
   		4'b1000: H <= 7'b0000000;
   		4'b1001: H <= 7'b0000100;
   	endcase
   else
   	H <= 7'b1111111;
end

endmodule

STEP5: 各模块整体调用显示

//
module number_display_16(
input[15:0] I,
input EI,
output EO,
output GS,
output wire[3:0] Y,
output wire[0:6] H0,
output wire[0:6] H1,
output wire[15:0] S
);

wire[7:0] D;
assign S=I;
assign EO=EI;
encoder164(I, EI, GS, Y);//第一步:16-4编码
bin42bcd(Y, GS, D);//第二步:四位二进制转十进制下十位上BCD和个位上BCD
seg7displaybcd(D[3:0], GS, H0);//第三步:个位上七段数值显示器显示
seg7displaybcd(D[7:4], GS, H1);//第四步:十位上七段数值显示器显示

endmodule

STEP6: 仿真

`timescale		1ns/1ns 

module	tb_top;
reg				clk			  ;
reg				rst_n	      ;
always  #5      clk    =       ~clk;
initial begin
 clk		<=		1'b1;
 rst_n	<=		1'b0;
 #100
 rst_n	<=		1'b1;
 
end
//例化
endmodule

五、 实现过程(简述实验流程、引脚分配文件等)

1.新建工程前的准备

在桌面上创建一个文件夹Lab1,在Lab1里新建文件夹prj(项目),sim(仿真),src(源文件)三个文件夹,最后再src文件夹里添加所有模块的.v文件。

2.建立新工程

*打开quartus Prime 软件,点击File->new->New Quartus Prime Project。
*工程项目命名:点击OK->Next,出现命名的界面。
*一直选择Next直至出现add Files界面,添加之前编写好的.v文件到工程中
*继续选择Next直至出现硬件选择界面,选择正确的芯片型号
*继续点击Next->Next->Finish,就完成了工程的建立。

3.编写.v文件代码

*使用notepad++或者gvim编写代码,编写好了再添加到项目工程中即可。

4.绑定引脚和编译

*对于输出、输入端口进行管脚绑定,选择菜单栏上Assignments—PINS,打开引脚分配器界面。在location一栏选择相对应的管脚(对应管脚在光盘中的芯片引脚分配图上查找),这个自己试一下就可以了,本实验采用导入引脚文件的方式,以后的实验将都采用这种方式。
*修改设置,设置三态无用管脚和nCEO常用I/O设置
选项Assignments----选Device----点Device and Pins Options,在选项卡中选Unused Pins—在Reserve allunused pins:点下拉菜单。中选 As input tri-state,在选项卡中选择 Dual-Purpose Pins 在nCEO 点下拉菜单选Us as regular I/O—确定----OK
*依次点击Analysis&Sythesis 和 Assembler即可生成.sof文件,该文件可以下载到开发板上。

5.下载.sof文件到FPGA开发板上

*点击Program Device,然后选择好usb_blaster和相应的.sof文件,再点击start即可

6.测试译码器

引脚分配文件

在这里插入图片描述

六、 实验结果(测试方法及结果等)

见附件演示视频。

七、 实验分析与研究

实验中遇到的问题及解决方法

  • 8-3编码器如何转变成16-4编码器?
    实际解决起来很简单,因为采用了优先编码器,我们只需要利用使能开关对对两个8-3编码器的优先权进行控制就可以
    在这里插入图片描述

实验改进思路:

在对四位二进制转换成十进制会有两位,因此需要调用两个七段显示器,许多人采取的是遍历0-15所有的情况,在每个十进制下对两个七段显示器分别操作。虽然这种方案可行,但是如果二进制位数提高,遍历所有十进制数值情况的代码编写显得有点困难繁琐。
因此我们创新出将二进制数转先转换成十进制上每一位的数值BCD码,然后直接将各个BCD码对应各个七段显示器进行显示,这种策略随着二进制位数的提升,优势更加明显,效率更高更简洁。

八、 实验心得、体会与建议

  • 第一次接触FPGA,从软件环境的安装配置,到新建工程、添加文件以及仿真、下载到开发板上。虽然一开始错误百出,始终记不住流程,但是经过几次亲身体验,已经能够较为流畅地实现整个过程。
  • 实验所使用的是 Verilog语言。,只有自己反复练习编写代码才能真正掌握清楚相关语法规则仿真是检测代码功能性的一大手段,通过仿真,观察时序波形,可以清楚看到实现机理,方便找到错与原因。
  • 通过此实验,已经能熟练地编写仿真测试程序。从仿真到实际开发板,需要一定的过渡,比如引脚的配置。通过查找开发板数据手册,可以找到引脚编号,写好引脚文件后导入即可。
ww20ya
关注 关注
  • 8
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
16线4线优先编码器vhdl设计
06-02
经硬件测试可以通过,如果打不开的话就用文本打开
两片74LS148设计16-4线优先编码器
07-15
本文主要讲了两片74LS148设计16-4线优先编码器,希望对你的学习有所帮助。
【Xilinx FPGA】随笔 - 编码器代码
最新发布
千思的博客
07-23 250
这里通过指定物理引脚将,sw和led相连接,约束文件用于连接各个器件与物理引脚而源文件用于编写逻辑设计(连接后具体进行什么样的操作,比如这里就是用来编码,连接后按照编码器的逻辑)综合生成比特流选择硬件,丢到板里面实践。
编码器 | 如何用两片8线-3线优先编码器扩展成16线-4线——数电第四章学习
fcxgfdjy的博客
03-29 2万+
编码器普通编码器优先编码器扩展 为了区分不同的事务,将其中的每个事物用一个二值代码表示,编码器的功能就是将输入的每一个高低电平编成一个对应的二进制代码。 普通编码器 意思即是可以通过看Y1Y2Y0的输出情况推断出输入的是什么信号。 最后可以化简成 电路图可以化成如下图所示: 优先编码器 特点:允许同时输入两个以上的编码信号,但只对其中优先权最高的一个进行编码。 常见的优先编码器有74H148(低电平有效) 观察此图我们可以发现,除了输入输出信号,图中还有红色标记的额外输出和额外输入。 这其实是为了
牛客刷题<1616线4线优先编码器
mxh3600的博客
08-22 3612
16线4线优先编码器
使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器
jk_101的博客
10-13 1240
使4个或门都打开,L[2:0]取决于U0的输出,而L[3]=GS1总是等于0,所以输出代码在0000-0111之间变化。当EI1=1且A[15:8]中至少有一个为高电平输人时,EO1=0,使EI0=0,U0禁止编码,此时L[3]=GS1=1,L[2:0]取决于U1的输出,输出代码在1000~1111之间变化,并且A的优先级别最高。当E=1时,U1允许编码,若A[15:8]均无有效电平输人,则EO1=1,使EI0=1,从而允许U0编码,因此U1的优先级高于U0。注:解题分析来源于网友,如有侵权,请告删之。
FPGA实验二2-4译码器设计实验报告原版 fpga开发.pdf
04-22
FPGA实验二2-4译码器设计实验报告原版fpga开发 本实验报告的主要内容是设计和实现一个2-4译码器,使用FPGA(Field-Programmable Gate Array,现场可编程门阵列)作为开发平台。实验的主要目的在于掌握FPGA开发的...
综合课程设计-课程实验FPGA代码-4 线-16 线译码器-内含源码和说明书(可自己修改).zip
05-29
在本综合课程设计中,我们将探讨一个基于FPGA(Field-Programmable Gate Array)的4线-16线译码器项目。这个项目旨在帮助学生深入理解数字逻辑设计和FPGA编程的基础知识,同时也提供了实际操作和代码修改的机会。 4...
基于FPGA的HDB3译码器设计与仿真.pdf
07-13
基于FPGA的HDB3译码器设计与仿真研究涉及多个关键知识点,具体包括FPGA技术、数字信号处理、HDB3码特性及其编码译码原理。 FPGA是一种可以通过编程来配置的数字集成电路,其内部含有大量的可编程逻辑块、寄存器、...
编码译码显示电路报告.pdf
11-07
任务:设计并制作一个具有编码译码功能的电路,并显示译码结果。 要求:1、可以对“0”,“1”,“2”……“9“十个按键进行编码。 2、可以译码,并用七段数码管显示出来。
计数译码显示电路设计
07-27
本文给大家分享了一个计数译码显示电路。
基于FPGA的8位数码管扫描显示电路设计
04-14
基于FPGA的8位数码管扫描显示电路设计,基于FPGA的8位数码管扫描显示电路设计
用两片74LS148组成的16线4线优先编码器multisim源文件
11-26
用两片74LS148组成的16线4线优先编码器multisim源文件,multisim10及以上版本可以正常打开仿真,是教材上的电路,可以直接仿真,方便大家学习。
4-16译码器引脚连接图
12-02
由两个74ls138组成的4-16译码
数字电路两片74148 16-4线编码器(病房管理)
热门推荐
weixin_44010022的博客
06-01 2万+
数字电路两片74148 16-4线编码器(病房管理) 一、 74148编码器 74LS148 是8 线-3 线优先编码器,共有 54/74148 和 54/74LS148 两种线路结构型式,将 8 条数据线(0-7)进行 3 线(4-2-1)二进制(八进制)优先编码,即对最高位数据线进行译码。利用选通端(EI)和输出选通端(EO)可进行八进制扩展。 二、74148真值表 A2为高位,记为A A1为B A0为C 则8线-3线74138的逻辑值对应为: 000 A逆 B逆 C逆 001 A逆 B逆 C 01
实验九 基于FPGA的计数译码显示电路设计
m0_73605862的博客
12-30 5645
基本任务一:利用FPGA硬件平台上的4位数码管做静态显示,用SW0-3输入BCD码,用SW4-7控制数码管位选。基本任务三:利用FPGA硬件平台上的6位数码管显示模100计数结果。扩展任务二:用按键控制计数器从0-9计数,4位数码管显示技术结果。基本任务二:利用FPGA硬件平台上的4位数码管显示m10技术结果。扩展任务一:对7448译码的6和9进行补段。
VL16—使用8线-3线优先编码器I实现16线-4线优先编码器(对源代码和测试代码tb的透彻了解)(待续tb)
qq_21952195的博客
07-17 2899
利用83编码器实现164编码器
基于fpga的卷积编码译码器设计
05-12
基于FPGA的卷积编码译码器设计是一项重要的电子设计领域。FPGA设备可以极大地提高设备的可编程性和灵活性,使得卷积编码译码器的设计具备更高的性能和更可靠的操作。卷积编码是一种用来处理数字通信系统中的误码纠正和数据传输的技术。卷积编码器是将输入数据转化为符号流的电路,而卷积译码器则是对接收到的误码数据进行纠正还原。 在基于FPGA的卷积编码译码器设计中,设计人员需要熟练掌握硬件描述语言和数字电子电路的基本原理,以及电子数字信号处理和通信系统的相关理论。使用FPGA的设计可以实现高效的数据处理和更快的数据传输速度。基于FPGA的卷积编码译码器设计可以更好地应用于数字通信和电子电路设计等领域。 基于FPGA的卷积编码译码器设计还可以实现多种编码和解码算法的实现,提高编码和解码的效率和准确性。这种设计不仅可以用来提高数字通信的确信性和稳定性,还可以应用于图像和视频等数据的传输和处理,实现更高效的图像和音视频传输。 总的来说,基于FPGA的卷积编码译码器设计是电子设计领域中的热门技术,具备更高的通信可靠性和更快的数据传输速度,可以应用于多种领域。
写文章

热门文章

  • 基于FPGA的16-4编码译码电路设计 5867
  • 嗅球与视网膜中神经环路的异同 322

大家在看

  • 【精品毕设推荐】基于SSM+jsp的在线医疗服务系统设计与实现 294
  • Linux:进程状态和优先级 2389
  • 模板:JDBC 连接数据库并实现 CRUD 288
  • 【精品毕设推荐】基于SSM+jsp的医院门诊挂号系统设计与实现 216
  • 【精品毕设推荐】基于SSM+jsp的学生公寓管理中心系统设计与实现 754

最新文章

  • 嗅球与视网膜中神经环路的异同
2022年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢红军雕塑原理江门公仔玻璃钢动物雕塑三门峡室外玻璃钢仿铜雕塑公司天津步行街玻璃钢雕塑价位商丘仿古玻璃钢彩绘雕塑厂家甘肃节日商场美陈宿州动物玻璃钢雕塑安装深圳室内商场美陈供应商三明玻璃钢植物仿真雕塑制作厂广东户外商场美陈生产企业德州景观园林玻璃钢彩绘雕塑德庆玻璃钢雕塑价格南平玻璃钢仿铜雕塑厂家成都公园玻璃钢雕塑价格广州番禺钟村卖玻璃钢雕塑江门玻璃钢雕塑厂创意玻璃钢雕塑定制新郑景观标识校园玻璃钢雕塑呈贡玻璃钢雕塑设计公司贵不贵白城玻璃钢雕塑定制云南人物玻璃钢雕塑江苏有玻璃钢雕塑订做玻璃钢红军雕塑品牌洛阳玻璃钢景观雕塑价格顺义商场美陈装饰安装衡水户外玻璃钢花盆商场玻璃钢花盆怎么样树脂玻璃钢雕塑怎么制作贵州玻璃钢艺术雕塑玻璃钢动物雕塑厂家电话香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化