七段数码管的动态扫描显示实验Word格式文档下载.docx
- 文档编号:4386363
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:9
- 大小:206.62KB
七段数码管的动态扫描显示实验Word格式文档下载.docx
《七段数码管的动态扫描显示实验Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《七段数码管的动态扫描显示实验Word格式文档下载.docx(9页珍藏版)》请在冰点文库上搜索。
输入以下程序:
moduleint_div(clk,div_out);
inputclk;
outputregdiv_out;
reg[31:
0]clk_div;
parameterCLK_FREQ='
D50_000_000;
//系统时钟50MHz
parameterDCLK_FREQ='
D10;
//输出频率10/2Hz
always@(posedgeclk)
begin
if(clk_div<
(CLK_FREQ/DCLK_FREQ))
clk_div<
=clk_div+1;
else
begin
=0;
div_out<
=~div_out;
end
end
endmodule
输入完成后,将该文件设为顶层实体,该命令在Project->
Setastop-levelEntity。
分析该设计文件:
执行工具栏处的“StartAnalysis&
Synthesis命令按钮,开始分析综合,此步骤在这里用于检查设计错误。
分析成功后要生成一个分频器的元件符号,执行File->
CreateSymbolfilesforcurrentfile,开始建立该文件的元件符号。
3.数码管扫描显示程序设计
modulesegmain(clk,reset_n,datain,seg_data,seg_com);
inputreset_n;
input[31:
0]datain;
output[7:
0]seg_data;
0]seg_com;
reg[7:
reg[3:
0]bcd_led;
reg[36:
0]count;
integertemp;
always@(posedgeclk)
begin
if(!
reset_n)count<
=0;
count<
=count+1;
temp=datain;
end
always@(count[14:
12]ordatain)
case(count[14:
12])
3'
b000:
temp=temp%10;
bcd_led=temp[3:
0];
seg_com=8'
b11111110;
b001:
temp=temp%100/10;
b11111101;
b010:
temp=temp%1000/100;
b11111011;
b011:
temp=temp%10000/1000;
b11110111;
b100:
temp=temp%100000/10000;
b11101111;
b101:
temp=temp%1000000/100000;
b11011111;
b110:
temp=temp%10000000/1000000;
b10111111;
b111:
temp=temp%100000000/10000000;
b01111111;
endcase
always@(seg_comorbcd_led)
case(bcd_led)
4'
h0:
seg_data=8'
hc0;
h1:
hf9;
h2:
ha4;
h3:
hb0;
h4:
h99;
h5:
h92;
h6:
h82;
h7:
hf8;
h8:
h80;
h9:
h90;
ha:
h88;
hb:
h83;
hc:
hc6;
hd:
ha1;
he:
h86;
hf:
h8e;
default:
输入完成后,将其设为顶层实体,检验后生成元件符号。
4.调用宏功能模块设计计数器
双击顶层图空白处,弹出symbol对话框,展开Libraries,找到lpm_counter.
按步骤一步步生成4位BCD码的计数器。
5.设计完整的顶层
返回顶层原理图,并注意重新将顶层原理图设为顶层实体。
双击顶层图空白的地方,弹出symbol对话框,展开Libraries栏的Project库,可看到上述步骤建立的一些元件符号。
按OK,在图纸上空白地方点击即可输入相应的元件,添加其它元件,完成下图连接:
6.设置芯片和管脚。
参照以下tclscript文件配置芯片管脚,并运行该tcl脚本。
#Setup.tcl
set_global_assignment-nameRESERVE_ALL_UNUSED_PINS"
ASINPUTTRI-STATED"
set_global_assignment-nameENABLE_INIT_DONE_OUTPUTOFF
set_location_assignmentPIN_149-toclk
set_location_assignmentPIN_90-toreset
#led
set_location_assignmentPIN_148-to78ledcom[0]
set_location_assignmentPIN_147-to78ledcom[1]
set_location_assignmentPIN_160-to78ledcom[2]
set_location_assignmentPIN_159-to78ledcom[3]
set_location_assignmentPIN_162-to78ledcom[4]
set_location_assignmentPIN_161-to78ledcom[5]
set_location_assignmentPIN_166-to78ledcom[6]
set_location_assignmentPIN_164-to78ledcom[7]
set_location_assignmentPIN_145-to78leddata[0]
set_location_assignmentPIN_143-to78leddata[1]
set_location_assignmentPIN_137-to78leddata[2]
set_location_assignmentPIN_139-to78leddata[3]
set_location_assignmentPIN_144-to78leddata[4]
set_location_assignmentPIN_146-to78leddata[5]
set_location_assignmentPIN_135-to78leddata[6]
set_location_assignmentPIN_142-to78leddata[7]
7.编译
执行菜单命令Project->
Setastop-levelEntity,将顶层图设为当前顶层实体,然后编译。
8.下载
1)下载设置:
使用下载线下载配置文件到FPGA。
2)下载完毕后可看到实验现象:
数码管实现显示0000-9999的十进制计数器。
六、实验小结
(1)这是我们这学期近代电子学实验的第一次实验报告,在前几次的实验中,已经熟悉了QuartusII设计软件的基本功能、原理图输入和HDL输入方法、功能仿真、综合、配置与编程的设计过程,尤其是针对QuartusII的使用初步花了几节课的时间,毕竟这个软件对于我们来说是很陌生的。
(2)在前面的实验中,学习QuartusII的基础实验中,课本上和课件上的介绍是很详细的,每一个操作步骤都是有截图的,所以跟着步骤一步一步的,只要小心谨慎,是不会出现错误的。
(3)这次的实验是对前几次的实验的整合,在LED的按键控制的基础上进行的实验,在我做实验的工程中,查找错误是最麻烦的琐碎的,往往错误源于很小的失误,比如忘记建立顶层图、调用宏功能模块设计计数器时选错选项等等。
这些错误看似微不足道,但是检查起来异常麻烦,所以我们在做实验的时候一定要小心谨慎,切记三心二意。
(4)通过这一次的实验练习,希望为以后打下坚实的基础。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管 动态 扫描 显示 实验