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、实验原理
根据开发板的原理图,可得到以下资料
拨码开关这里选择低三位,也就是编号 8 、7 、 6
3.2、框架设计
对于FPGA来说,需要接收来自拨码开关的输入,然后驱动控制LED,故有以下系统框架
3.3、功能模块划分
由于本设计比较简单,故没有必要划分多个模块
可以得出我们的端口信号为 3 bit 的拨码开关输入 和 8 bit 的LED输出
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仿真
在进行仿真之前,一定要确保我们的设计文件和测试文件成功通过分析综合的检验,如下图
Quartus 联合 Modelsim仿真的相关设置如下:
设置完成后,一路OK下去就好,然后点击 菜单栏 Tools —> Run Simulation Tool —> RTL Simulation,
启动仿真软件
成功运行的情况应该是会在这个界面文章来源:https://www.toymoban.com/news/detail-718133.html
如果后面的注释出现中文乱码,需要进行如下设置:把编码格式改为“utf-8”
接下来介绍一些常用的按钮(菜单)
经过检查波形图,可以确认是符合我们的预期文章来源地址https://www.toymoban.com/news/detail-718133.html
3.8、上板验证
验证完设计文件的逻辑功能正确性之后
绑定我们的引脚(实验原理中的原理图可以得到具体的引脚信息)
然后连接开发板,编程下载
经验证也是符合我们的预期设置的
4、总结
1. 任何文件,模块名和文件名一定要保持一致!!!不然Modelsim会找不到对应的文件
2. 调用文件的时候,实例化名称可以和模块名不一样,也可以保持一致
3. 任何一个信号,我们在使用之前,一定要先声明
4. 两个端口信号(输入输出信号)之间用 “,”隔开
到了这里,关于Verilog实现 3-8译码器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!