FPGA入门系列实验教程二_seg7实验以及仿真

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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语法要求比较严谨,很多警告虽然对结果并不产生影响,但警告都是设计不合理导致,某些警告还是会导致错误结果。因此设计里应养成规范的编程习惯让警告尽量少。

相关文档
最新文档