Verilog实现 3-8译码器

这篇具有很好参考价值的文章主要介绍了Verilog实现 3-8译码器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、实验平台

软件:Quartus Prime 18.1、Modelsim 10.5b
硬件:Altera FPGA开发板(EP4CE6E22F17C8)

2、实验目的

熟悉Verilog的语法与Modelsim仿真流程
根据输入的3位拨码开关驱动依次点亮对应的LED灯,实现译码效果

2.1、实验要求

要求根据输入的不同情况,实现以下效果:
拨码开关 LED(低电平有效)
000 11111110
001 11111101
010 11111011
011 11110111
100 11101111
101 11011111
110 10111111
111 01111111

3、实验流程

3.1、实验原理

根据开发板的原理图,可得到以下资料
拨码开关这里选择低三位,也就是编号 876 

3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写

3.2、框架设计

对于FPGA来说,需要接收来自拨码开关的输入,然后驱动控制LED,故有以下系统框架

3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写

3.3、功能模块划分

由于本设计比较简单,故没有必要划分多个模块	
可以得出我们的端口信号为 3 bit 的拨码开关输入 和 8 bit 的LED输出

3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写

3.4、时序信号图

因本设计信号简单,且为组合逻辑电路,故无需时序图

3.5、代码实现

/***************************
file_name: Decoder.v
Author:Adolph
Description: 3 to 8 decoder
@Time:2022-4-25 14:32:21
Reversion:1.0
****************************/
module Decoder(
	input	wire [2:0]	Key_in,//3位拨码开关输入4
	input	wire		clk	,//50MHZ
	
	output	reg	 [7:0]	led		//8颗LED输出
);
	always@(Key_in)begin
		case(Key_in)	
			3'b000 : led = 8'b1111_1110;
			3'b001 : led = 8'b1111_1101;
			3'b010 : led = 8'b1111_1011;
			3'b011 : led = 8'b1111_0111;
			3'b100 : led = 8'b1110_1111;
			3'b101 : led = 8'b1101_1111;
			3'b110 : led = 8'b1011_1111;
			3'b111 : led = 8'b0111_1111;
			default: ;//空语句
		endcase
	end
endmodule 

3.6、测试文件

/*************************
file_name: tb_Decoder.v
Author:Adolph
Description: 译码器测试文件
@Time:2022-4-25 14:56:07
Reversion:1.0
****************************/

`timescale  1ns/1ns  //时间尺度,定义仿真系统时间单位和时间精度

module tb_Decoder();

//激励信号
	reg	[2:0]	tb_key;

//响应信号
	wire [7:0]	led;

//模块实例化
	Decoder		U_Decoder(
		/*input	wire [2:0]	*/.Key_in(tb_key),//3位拨码开关输入

		/*output reg [7:0]	*/.led	 (led	)	//8颗LED输出
	);

//信号初始化
	initial	begin
		tb_key = 3'b000;
		#38;
		tb_key = 3'b111;
		repeat(15)begin //循环语句
			# 46;
			tb_key = tb_key + 1'b1;
		end
		#200;
		$stop(2);
	end
endmodule 

3.7、Modelsim仿真

在进行仿真之前,一定要确保我们的设计文件和测试文件成功通过分析综合的检验,如下图

3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
Quartus 联合 Modelsim仿真的相关设置如下:
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写

设置完成后,一路OK下去就好,然后点击 菜单栏 Tools —> Run Simulation Tool —> RTL Simulation,
启动仿真软件 

3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
成功运行的情况应该是会在这个界面
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写

如果后面的注释出现中文乱码,需要进行如下设置:把编码格式改为“utf-8

3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
接下来介绍一些常用的按钮(菜单)
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
经过检查波形图,可以确认是符合我们的预期
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写
3-8译码器verilog,FPGA学习,fpga开发,verilog设计,Modelsim仿真,testbench编写文章来源地址https://www.toymoban.com/news/detail-718133.html

3.8、上板验证

验证完设计文件的逻辑功能正确性之后
绑定我们的引脚(实验原理中的原理图可以得到具体的引脚信息)
然后连接开发板,编程下载
经验证也是符合我们的预期设置的

4、总结

 1. 任何文件,模块名和文件名一定要保持一致!!!不然Modelsim会找不到对应的文件
 2. 调用文件的时候,实例化名称可以和模块名不一样,也可以保持一致 	
 3. 任何一个信号,我们在使用之前,一定要先声明
 4. 两个端口信号(输入输出信号)之间用 “,”隔开

到了这里,关于Verilog实现 3-8译码器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA二四译码器设计及实现

    FPGA二四译码器设计及实现 在数字电路中,二进制的计数方式广泛应用于各种场合。然而,当我们需要控制多个开关或LED时,手动进行二进制转换并不是一种好的选择。因此,在这种情况下,二进制译码器就显得尤为重要。 二四译码器是一种将两个输入字线转换为四个输出字

    2024年02月04日
    浏览(36)
  • verilog入门-38译码器

    一、组合逻辑电路与时序逻辑电路 组合逻辑电路: 任意时刻的输出仅仅由该时刻的输入决定,与电路当前的状态无关 。 时序逻辑电路: 任意时刻的输出不仅由该时刻的输入决定,还与电路当前的状态有关 。 二、38译码器的工作原理 表①、38译码器真值表 3种输入状态翻译

    2024年02月11日
    浏览(30)
  • verilog——三八译码器

    三八译码器 test_bench代码

    2024年02月12日
    浏览(29)
  • 【Verilog七段译码器】

    本人只是初学,代码经过实验验证,仅供参考 我自己查找模仿编写运行的代码,如有侵权,联系删除。 这是译码器,其作用是将四位 BCD 码转换成七段数码管的段码,显示 1、 2、3…数字。 简单的译码器,书上的例题,只是我多设置了一个输出B

    2024年02月07日
    浏览(30)
  • FPGA学习笔记(八)——3-8译码器的设计与验证

        3-8译码器是三输入,八输出。当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平的情况下,能表示所有

    2024年02月05日
    浏览(32)
  • Verilog 3线-8线译码器设计

    任务描述 相关知识 3线-8线译码器的功能 case语句 编程要求 说明  源代码 设计一个3线-8线译码器。运用Verilog HDL进行设计,完善译码器的功能描述风格代码,具备组合逻辑电路的设计仿真和测试的能力。 需要掌握: 1.3线-8线译码器的功能; 2.如何用case语句进行逻辑功能的描

    2024年02月08日
    浏览(40)
  • FPGA数字电路设计:三八译码器的原理与实现

    FPGA数字电路设计:三八译码器的原理与实现 三八译码器是常用于数字电路设计中的一种重要元件。它的作用是将三位二进制信号转换成八个输出信号,通常用于地址解码、选通控制、状态指示等应用场景。 在FPGA数字电路设计中,三八译码器的实现需要借助Verilog HDL语言进行

    2024年02月08日
    浏览(32)
  • FPGA_38译码器

    本文来自《小梅哥FPGA视频》的笔记整理 不要眼高手低,一定一定要实践,自己动手去敲一遍!!! 在数字电路中可以根据电路功能的不同分为,组合逻辑电路与时序逻辑电路。 组合逻辑 电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状

    2023年04月11日
    浏览(29)
  • 使用verilog编写三八译码器及四位全加器

    目录 一、三八译码器原理 二、使用verilog编写三八译码器 1.使用verilog代码如下: 2.verilog的数据类型 (1)wire类型 (2)reg类型 三、使用verilog编写全加器 1.一位全加器  2.四位全加器 3.八位全加器  总结 三八译码器的输入信号有三个,相当于有八个二进制编码可以输入,每个

    2024年02月04日
    浏览(32)
  • (2)FPGA仿真——3-8译码器设计

    译码是编码的逆过程,在编码时,每一种二进制代码,都赋予了特定的含义,即都表示了一个确定的信号或者对象。把代码状态的特定含义翻译出来的过程叫做译码,实现译码操作的电路称为译码器。或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包