VHDL数字秒表设计Word文档下载推荐.docx

上传人:b****6 文档编号:20598639 上传时间:2023-01-24 格式:DOCX 页数:19 大小:328.61KB
下载 相关 举报
VHDL数字秒表设计Word文档下载推荐.docx_第1页
第1页 / 共19页
VHDL数字秒表设计Word文档下载推荐.docx_第2页
第2页 / 共19页
VHDL数字秒表设计Word文档下载推荐.docx_第3页
第3页 / 共19页
VHDL数字秒表设计Word文档下载推荐.docx_第4页
第4页 / 共19页
VHDL数字秒表设计Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

VHDL数字秒表设计Word文档下载推荐.docx

《VHDL数字秒表设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VHDL数字秒表设计Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

VHDL数字秒表设计Word文档下载推荐.docx

数字秒表采用模块化设计:

(1)输入信号:

基准时钟clk(20MHz),清零端clr(高电平有效),启动/暂停信号en_count(低电平时启动,高电平时暂停)

(2)计时器:

以10ms为计时分辨率,每10ms产生一个“10毫秒脉冲”信号,每990ms产生一个“秒脉冲”信号,每60秒产生一个“分脉冲”信号;

(3)取数模块:

对计时器输出的分、秒、十毫秒信号进行逐位取数,变成将在数码管上显示的十进制数;

(4)编码模块:

将分、秒、十毫秒的十进制数转换成数码管显示的编码;

(5)数码管显示控制模块:

每隔3ms使能更新不同数码管的数据,6位数码管更新一次共用时18ms,刷新频率大于50HZ,利用人的视觉暂留,好像6位LED是同时点亮的,并不察觉有闪烁现象;

(6)数码管地址选择模块:

每隔3ms使能点亮不同的数码管,6位数码管一共用时18ms。

三、开发环境

开发环境:

1、PC机一台

2、WindowsXP32位操作系统

3、Altera公司的QuartusII9.0软件

4、基于CycloneII型EP2C8Q208C8的开发板

四、模块结构

4.1数字秒表RTL级电路

modulecounter_top(clk,en_count,clr,row_scan_sig,column_scan_sig);

inputclk;

//inputclock20MHz

inputen_count;

//startandpause

inputclr;

//clear

output[7:

0]row_scan_sig;

output[5:

0]column_scan_sig;

wire[7:

0]ms,sec,min;

wire[3:

0]ms_hun,ms_ten,sec_ten,sec_one,min_ten,min_one;

0]ms_ten_dis,ms_hun_dis,sec_ten_dis,sec_one_dis,min_ten_dis,min_one_dis;

countU0

.clk(clk),.clr(clr),.en_count(en_count),

.ms(ms),.sec(sec),.min(min)//output-toU1

);

number_modU1

.ms(ms),.sec(sec),.min(min),//input-fromU0

.ms_ten(ms_ten),.ms_hun(ms_hun),//output-toU2

.sec_one(sec_one),.sec_ten(sec_ten),//output-toU2

.min_one(min_one),.min_ten(min_ten)//output-toU2

encoderU2

.ms_ten(ms_ten),.ms_hun(ms_hun),

//input-fromU1

.sec_one(sec_one),.sec_ten(sec_ten),

.min_one(min_one),.min_ten(min_ten),

.ms_ten_dis(ms_ten_dis),.ms_hun_dis(ms_hun_dis),

//output-toU3

.sec_one_dis(sec_one_dis),.sec_ten_dis(sec_ten_dis),

.min_one_dis(min_one_dis),.min_ten_dis(min_ten_dis)//output-toU3

row_scanU3

.min_one_dis(min_one_dis),.min_ten_dis(min_ten_dis),

.row_scan_sig(row_scan_sig)

//outputoftop

//input-fromU2

column_scanU4

.clk(clk),.clr(clr),

.column_scan_sig(column_scan_sig)//outputoftop

endmodule

4.2计时器模块

输入信号:

基准时钟clk,清零端clr,启动/暂停信号en_count

输出信号:

分min、秒sec、毫秒ms

modulecount(clk,clr,en_count,ms,sec,min);

inputclk,clr,en_count;

output[7:

reg[17:

0]count1;

reg[7:

0]r_min,r_sec,r_ms;

parameterT10MS=18'

d199_999;

//parameterT10MS=18'

d1;

/*setT10MS=18'

d1forsimulation*/

always@(posedgeclkorposedgeclr)if(clr)

count1<

=18'

d0;

elseif(count1==T10MS)count1<

else

=count1+1'

b1;

begin

r_min<

=8'

r_sec<

r_ms<

end

elseif(en_count)begin

=r_min;

=r_sec;

=r_ms;

endelse

if(count1==T10MS)begin

if(r_ms==8'

d99)begin

r_ms<

if(r_sec==8'

d59)

r_sec<

if(r_min==8'

else

=r_min+1'

=r_sec+1'

=r_ms+1'

assignms=r_ms;

assignsec=r_sec;

assignmin=r_min;

endmodule

4.3取数模块

基准时钟clk,清零端clr,启动/暂停信号en_count,分min、秒sec、毫秒ms

毫秒的十位ms_ten、毫秒的百位ms_hun、秒的个位sec_one、秒的十位sec_ten、分的个位min_one、分的十位min_tenmodulenumber_mod

clk,clr,en_count,ms,sec,min,ms_ten,ms_hun,sec_one,sec_ten,min_one,min_ten

input[7:

output[3:

/*********************************/

reg[31:

0]r_ms_hun,r_ms_ten,r_sec_ten,r_sec_one,r_min_ten,r_min_one;

/*在quartusII9.0版本中,“除法器”可以自己定义。

在更高级的版本中,默认下“除法器”和“求余器”是32位输出。

但是经过“编译”过后,编译器会“自动优化”最适合的位宽*/

r_ms_ten<

=32'

r_ms_hun<

elseif(en_count)begin

=r_ms_ten;

r_ms_hun<

=r_ms_hun;

=ms%10;

=ms/10;

r_sec_one<

r_sec_ten<

=r_sec_one;

=r_sec_ten;

=sec%10;

=sec/10;

r_min_one<

r_min_ten<

=r_min_one;

=r_min_ten;

=min%10;

=min/10;

end/***********************************/

assignms_ten=r_ms_ten[3:

0];

assignms_hun=r_ms_hun[3:

assignsec_one=r_sec_one[3:

assignsec_ten=r_sec_ten[3:

assignmin_one=r_min_one[3:

assignmin_ten=r_min_ten[3:

/***********************************/

4.4编码模块

基准时钟clk,清零端clr,启动/暂停信号en_count,毫秒的十位ms_ten、毫秒的百位ms_hun、秒的个位sec_one、秒的十位sec_ten、分的个位min_one、分的十位min_ten

毫秒的十位编码ms_ten_dis、毫秒的百位编码ms_hun_dis、秒的个位编码sec_one_dis、

秒的十位编码sec_ten_dis、分的个位编码min_one_dis、分的十位编码min_ten_dismoduleencoder

clk,clr,en_count,ms_ten,ms_hun,ms_ten_dis,ms_hun_dis,sec_one,sec_ten,sec_one_dis,sec_ten_dis,min_one,min_ten,min_one_dis,min_ten_dis

input[3:

0]ms_ten,ms_hun,sec_ten,sec_one,min_ten,min_one;

/*******************不带小数点的数码管显示*********************/

parameter_0=8'

b1100_0000,_1=8'

b1111_1001,_2=8'

b1010_0100,_3=8'

b1011_0000,_4=8'

b1001_1001,_5=8'

b1001_0010,_6=8'

b1000_0010,_7=8'

b1111_1000,_8=8'

b1000_0000,_9=8'

b1001_0000;

/*******************带小数点的数码管显示*********************/

parameter_0_=8'

b0100_0000,_1_=8'

b0111_1001,_2_=8'

b0010_0100,

_3_=8'

b0011_0000,_4_=8'

b0001_1001,_5_=8'

b0001_0010,

_6_=8'

b0000_0010,_7_=8'

b0111_1000,_8_=8'

b0000_0000,

_9_=8'

b0001_0000;

/*************************************/

0]r_ms_ten_dis;

r_ms_ten_dis<

=_0;

elseif(en_count)

=r_ms_ten_dis;

case(ms_ten)

4'

d0:

r_ms_ten_dis<

d1:

=_1;

d2:

=_2;

d3:

=_3;

d4:

=_4;

d5:

=_5;

d6:

=_6;

d7:

=_7;

d8:

=_8;

d9:

=_9;

endcase

/***************************************/

0]r_ms_hun_dis;

always@(posedgeclkorposedgeclr)if(clr)

r_ms_hun_dis<

=r_ms_hun_dis;

case(ms_hun)

r_ms_hun_dis<

0]r_sec_one_dis;

r_sec_one_dis<

=_0_;

=r_sec_one_dis;

case(sec_one)

r_sec_one_dis<

=_1_;

=_2_;

=_3_;

=_4_;

=_5_;

=_6_;

=_7_;

=_8_;

=_9_;

/***************************************/reg[7:

0]r_sec_ten_dis;

r_sec_ten_dis<

=r_sec_ten_dis;

case(sec_ten)

r_sec_ten_dis<

0]r_min_one_dis;

r_min_one_dis<

=r_min_one_dis;

case(min_one)

r_min_one_dis<

0]r_min_ten_dis;

r_min_ten_dis<

=r_min_ten_dis;

case(min_ten)

r_min_ten_dis<

d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1