电子设计自动化实验指导
图3.1 参考代码
编译成功后,进行引脚锁定并下载,观察实验现象。170,P172,P173,P174相连,由其控制实现各位分时选通,动态扫描。SEG3——SEG6(a,b,c,d,e,f,g,p)的各段与CPLD引脚的对应关系为:P175、P176、P177、P179、P180、P186、P187、P189。
表3.1 引脚锁定对应表 clk 183 续上表
led7s[0] led7s[1] led7s[2] led7s[3] led7s[4] led7s[5] led7s[6] 175 176 177 179 35
bt[3] 170 bt[2] 172 bt[1] 173 bt[0] 174 180 186 187 电子设计自动化实验指导
五. 实验要求
1. 要求改变扫描频率,本代码为1Hz扫描频率,要求分别显示10Hz,100Hz和1000Hz
的扫描频率,观察其现象。
2. 改变显示的数值,本代码显示的数值为1,2,3,4,可以修改为显示5,6,7,8的
扫描。
3. 提高部分 加入stop信号,stop为1时,停止扫描,stop为0时继续扫描。
六. 报告要求
1. 给出动态扫描的原理,分频后的时钟频率公式。 2. 要求给出具体的代码和引脚锁定对应的表格。 3. 写出实验现象,并对现象进行必要的分析
36
电子设计自动化实验指导
实验四 简易数字时钟
一、 实验目的
1. 学习并掌握if嵌套语句的硬件语言描述方法。 2. 掌握简易数字时钟的verilog-HDL代码设计方法。
二、 实验仪器设备
1. PC机一台
2.QUARTUSⅡ CPLD软件开发系统一套。
三、 实验原理
在四个数据管上分别显示分和秒,采用动态显示。输入信号为40MHz的时钟clk,位选扫描信号scan[3:0],其扫描频率为1kHz,输出为seg7[6:0],用来显示时钟的数值。
四、 实验内容及实验步骤
输入代码,进行编译下载,观察实验现象。 参考代码如下:
module clock(clk,seg7,scan); input clk; output[6:0]seg7; output[3:0]scan; reg[15:0]cnt1,cnt2; reg[1:0]cnt3; reg clk1hz,clk1khz; reg[5:0]sec,min; reg[15:0]timed; reg[3:0]data; reg[3:0]scan; reg[6:0]seg7;
/********************** 1kHz,用于扫描
**********************/ always@(posedge clk) begin
if(cnt1==19999) begin
cnt1=0;clk1khz=~clk1khz;end else
37
电子设计自动化实验指导
cnt1=cnt1+1'b1; end
/********************** 1Hz,用于计时
**********************/ always@(posedge clk1khz) begin if(cnt2==499) begin
cnt2=0;clk1hz=~clk1hz;end else
cnt2=cnt2+1'b1; end
/********************** 时钟计时
**********************/ always@(posedge clk1hz) begin
timed[3:0]<=timed[3:0]+1'b1; if(timed[3:0]==4'h9) begin
timed[7:4]<=timed[7:4]+1'b1;timed[3:0]<=0; if(timed[7:4]==4'h5) begin
timed[11:8]<=timed[11:8]+1'b1;timed[7:4]<=0; if(timed[11:8]==4'h9) begin
timed[15:12]<=timed[15:12]+1'b1;timed[11:8]<=0; if(timed[15:12]==4'h5) begin
timed[15:12]<=0; end end end end end
/******************************** *数码管动态扫描计数
********************************/ always@(posedge clk1khz) begin if(cnt3==3)
38