《2022年动态数码管显示_设计EDA .pdf》由会员分享,可在线阅读,更多相关《2022年动态数码管显示_设计EDA .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、EDA 设计技术数码管动态显示1 实验目的学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己学号的显示。2 实验内容(1)在 SmartSOPC 实验箱上完成数码管动态显示自己学号的后八个数字。(2)放慢扫描速度演示动态显示的原理过程。3 实验原理数码管的八个段a,b,c,d,e,f,g,h(h 是小数点)都分别连接到SEG0SEG7,8 个数码管分别由八个选通信号DIG0DIG7来选择,被选通的数码管显示数据,其余关闭。如果希望8个数码管显示希望的数据,就必须使得8 个选通信号DIG0DIG7 分别被单独选通,并在此同时, 在段信号输入口SEG0SEG7 加上该对应数码管
2、上显示的数据,于是随着选通信号的扫描就能实现动态扫描显示的目的。虽然每次只有1 个数码管显示, 但只要扫描显示速率足够快,利用人眼的视觉余辉效应,我们仍会感觉所有的数码管都在同时显示。4 实验指导同学们统一将新建的项目命名为scan_led, 新建的 Verilog HDL 文件命名为scan_led.v,模块的接口定义如下:module scan_led(sys_clk,dig,seg); /模块名 scan_led input sys_clk; /输入时钟output7:0 dig; /数码管选择输出引脚output7:0 seg; /数码管段输出引脚reg 25:0count; reg
3、clk; always (posedge sys_clk) begin if (count 26d48000000) begin count = count + 1b1; clk = 1b0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - EDA 设计技术end else begin count = 17d0; clk = 1b1; end end reg 7:0seg_r,dig_r; reg3:0disp_dat; reg
4、 2:0cnt; always ( posedge sys_clk) begin if(clk) cnt=cnt+1b1; end always ( posedge sys_clk) if(clk) begin case(cnt) /选择扫描显示数据3d0:disp_dat =4h0; /第一个数码管3d1:disp_dat =4h1; /第二个数码管3d2:disp_dat =4h0; /第三个数码管3d3:disp_dat =4h9; /第四个数码管3d4:disp_dat =4h0; /第五个数码管3d5:disp_dat =4h1; /第六个数码管3d6:disp_dat =4h2;
5、/第七个数码管3d7:disp_dat =4h5; /第八个数码管endcase 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - EDA 设计技术case(cnt) /选择数码管显示位3d0:dig_r = 8b01111111; /选择第一个数码管显示3d1:dig_r = 8b10111111; /选择第二个数码管显示3d2:dig_r = 8b11011111; /选择第三个数码管显示3d3:dig_r = 8b11101
6、111; /选择第四个数码管显示3d4:dig_r = 8b11110111; /选择第五个数码管显示3d5:dig_r = 8b11111011; /选择第六个数码管显示3d6:dig_r = 8b11111101; /选择第七个数码管显示3d7:dig_r = 8b11111110; /选择第八个数码管显示endcase end always (disp_dat) begin case(disp_dat) /七段译码4h0:seg_r = 8hc0; /显示 0 4h1:seg_r = 8hf9; /显示 1 4h2:seg_r = 8ha4; /显示 2 4h3:seg_r = 8hb0
7、; /显示 3 4h4:seg_r = 8h99; /显示 4 4h5:seg_r = 8h92; /显示 5 4h6:seg_r = 8h82; /显示 6 4h7:seg_r = 8hf8; /显示 7 4h8:seg_r = 8h80; /显示 8 4h9:seg_r = 8h90; /显示 9 4ha:seg_r = 8h88; /显示 a 4hb:seg_r = 8h83; /显示 b 4hc:seg_r = 8hc6; /显示 c 4hd:seg_r = 8ha1; /显示 d 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
8、 - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - EDA 设计技术4he:seg_r = 8h86; /显示 e 4hf:seg_r = 8h8e; /显示 f endcase end assign seg=seg_r; assign dig=dig_r; endmodule 说明 :将实验箱提供的48MHz 时钟 sys_clk 分频得到 1KHz 频率信号,作为数码管的扫描时钟。同学们可自行设计分频模块,也可以使用本次实验提供的int_div。在 Verilog HDL 文件中调用 int_div 模块得到1KHz 的方法如下:
9、wire clk; int_div #(48000,16) int_div1(sys_clk,clk); 引脚分配 :信号引脚信号引脚信号引脚seg0 169 seg7 164 dig6 238 seg1 170 dig0 160 dig7 239 seg2 167 dig1 159 sys_clk 28 seg3 168 dig2 162 seg4 165 dig3 161 seg5 166 dig4 236 seg6 163 dig5 237 实验现象 :引脚分配好,编译通过后,用实验箱配置的连线将核心板上PACK 区的引脚236、237、238 和 239 分别与数码管显示区的COM3(
10、DIG_COM) 的 DIG4DIG7相对应连接。然后用编程下载线缆将程序下载到FPGA 中,观察 LED 数码管上的数字是否为自己学号后8 位;之后将 48MHz 时钟分频得到2Hz 信号作为数码管扫描时钟,再重新编译下载, 观察这次 LED名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - EDA 设计技术数码管上显示的数据是否动起来了。2,秒表,按下按键1 时 秒表开始计时, 再按下按键1 时秒表停止计时,按下按键 2 时秒表
11、清零,秒表计数为9 分钟 59 秒module scan_led(sys_clk,key,dig,seg); /模块名 scan_led input sys_clk; /输入时钟input 1:0key; output7:0 dig; /数码管选择输出引脚output7:0 seg; /数码管段输出引脚reg 3:0sum1,sum2,sum3; reg en; reg 25:0count; reg clk; always (posedge sys_clk) begin if(key1) count=26d0; if (count 26d48000000) begin count = coun
12、t + 1b1; clk = 1b0; end else begin count = 26d0; clk = 1b1; end end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - EDA 设计技术always(posedge sys_clk) if(!key1) begin en=en; end always (posedge sys_clk) begin if(!key0) begin sum1=4h0; sum2=4h0
13、; sum3=4h0; end if(en) begin if(clk) if(sum1=4d9) begin 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - EDA 设计技术sum1=4d0; if(sum2=4d5) begin sum2=4d0; if(sum3=4d9) sum3=4d0; else sum3=sum3+1b1; end else sum2=sum2+1b1; end else sum1=sum1+1b1
14、; end end /扫描显示reg 16:0 count1; reg div_clk; always (posedge sys_clk) begin if (count1 17d120000) begin count1 = count1 + 1b1; div_clk = 1b0; end 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - EDA 设计技术else begin count1 = 17d0; div_clk = 1b
15、1; end end reg 7:0seg_r,dig_r; reg3:0disp_dat; reg 1:0cnt; always (posedge sys_clk) begin if(div_clk) cnt=cnt+1b1; end always ( posedge sys_clk) if(div_clk) begin case(cnt) /选择扫描显示数据2b00:disp_dat =4h0; /第一个数码管2b01:disp_dat =sum3; /第二个数码管2b10:disp_dat =sum2; /第三个数码管2b11:disp_dat =sum1; /第四个数码管endcase
16、 case(cnt) /选择数码管显示位2b00:dig_r = 8b01111111; /选择第一个数码管显示2b01:dig_r = 8b10111111; /选择第二个数码管显示2b10:dig_r = 8b11011111; /选择第三个数码管显示2b11:dig_r = 8b11101111; /选择第四个数码管显示名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - EDA 设计技术endcase end always (
17、disp_dat) begin case(disp_dat) /七段译码4h0:seg_r = 8hc0; /显示 0 4h1:seg_r = 8hf9; /显示 1 4h2:seg_r = 8ha4; /显示 2 4h3:seg_r = 8hb0; /显示 3 4h4:seg_r = 8h99; /显示 4 4h5:seg_r = 8h92; /显示 5 4h6:seg_r = 8h82; /显示 6 4h7:seg_r = 8hf8; /显示 7 4h8:seg_r = 8h80; /显示 8 4h9:seg_r = 8h90; /显示 9 4ha:seg_r = 8h88; /显示 a
18、4hb:seg_r = 8h83; /显示 b 4hc:seg_r = 8hc6; /显示 c 4hd:seg_r = 8ha1; /显示 d 4he:seg_r = 8h86; /显示 e 4hf:seg_r = 8h8e; /显示 f endcase end assign seg=seg_r; assign dig=dig_r; endmodule 王彬 09401090125 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -