FPGA入门系列实验教程二_seg7实验以及仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 7段数码管实验以及仿真设置
一. 实验目的
1. 进一步了解FPGA的设计流程和加深对QII的使用。
2. 学习和了解动态扫描数码管的工作原理的程序设计方法。
3. 加强和熟悉VHDL语言的设计方法和特点,学会掌握常用的 计数器,译码器的设计,功能宏模块使用方法。
4. 学习使用QII中的仿真功能。
二. 实验原理
1、管脚映射:略(参考例子)
2、开发板上使用了一个4位联体的共阳极7段数码管,动态扫描显示接口是数码管应用最为广泛的一种显示方式之一。其接口电路是把所有显示器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O 线控制。CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,轮流控制各个数码管的COM端,使各个LED轮流点亮。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的,但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上每个显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
4位7段共阳数码管参考图
三. 实验步骤
本实验要实现一个增加的数在数码管上显示。
1. 设计主电路模块
在QII中新建一个工程,本实验开发板为例。先建一个顶层图,另存为seg7led.bdf(与所在文件夹名相同).再新建一个.V文件,另存为
segmain.v(必需与程序中的模块名 module “segmain“相同,如两处蓝色字体指出的名字必需相同)。
输入以下程序(Verilog以及VHDL程序可以参考光盘中例子):
module segmain(clk,reset_n,datain,seg_data,seg_com);
input clk;
input reset_n;
input [15:0] datain;
output [7:0]seg_data;
output [3:0]seg_com;
reg [3:0]seg_com;
reg [7:0]seg_data;
reg [3:0]bcd_led;
reg [36:0]count;
always @(posedge clk)
begin
if(!reset_n)
count<=0;
else
count=count+1;
end
always @(count[14:13] or datain)
begin
case(count[14:13])
2'b00:
begin
bcd_led =datain[3:0];
seg_com =4'b1110; //低有效
end
2'b01:
begin
bcd_led=datain[7:4];
seg_com=4'b1101;
end
2'b10:
begin
bcd_led=datain[11:8];
seg_com=4'b1011;
end
2'b11:
begin
bcd_led=datain[15:12];
seg_com=4'b0111;
end
endcase
end
always @(seg_com or bcd_led)
begin
case(bcd_led)
4'h0:seg_data=8'hc0;// 0 //共阳,低有效
4'h1:seg_data=8'hf9;// 1
4'h2:seg_data=8'ha4;// 2
4'h3:seg_data=8'hb0;// 3
4'h4:seg_data=8'h99;// 4
4'h5:seg_data=8'h92;// 5
4'h6:seg_data=8'h82;// 6
4'h7:seg_data=8'hf8;// 7
4'h8:seg_data=8'h80;// 8
4'h9:seg_data=8'h90;// 9
4'ha:seg_data=8'h88;// A
4'hb:seg_data=8'h83;// b
4'hc:seg_data=8'hc6;// c
4'hd:seg_data=8'ha1;// D
4'he:seg_data=8'h86;// E
4'hf:seg_data=8'h8e;// F
default:seg_data=8'hc0;
endcase
end
endmodule
2. 开始分析综合这个模块
注意:开始分析综合前要把当前要编译的模块设成顶层实体后再开始。即:project菜单,选择“set as top level Entity”后可看到下面message窗口: info:changed top-level design entity name to “segmain”.
分析该v设计文件:执行工具栏处的“Start Analysis &Synthesis”命令按钮,开始分析综合,这个步骤在这里用于检查设计错误。
分析成功后我们要生成一个七段数码管的译码元件符号(Symbol),执行FileÆCreate/UpdateÆCreate Symbol files for current file,开始建立该文件的元件符号。
完成后可能看到有一个警告,由于QII语法要求比较严谨,很多警告虽然对结果并不产生影响,但警告都是设计不合理导致,某些警告还是会导致错误结果。因此设计里应养成规范的编程习惯让警告尽量少。