EDA设计报告数字秒表设计Word文档格式.docx

上传人:b****2 文档编号:14995939 上传时间:2022-10-26 格式:DOCX 页数:13 大小:102.51KB
下载 相关 举报
EDA设计报告数字秒表设计Word文档格式.docx_第1页
第1页 / 共13页
EDA设计报告数字秒表设计Word文档格式.docx_第2页
第2页 / 共13页
EDA设计报告数字秒表设计Word文档格式.docx_第3页
第3页 / 共13页
EDA设计报告数字秒表设计Word文档格式.docx_第4页
第4页 / 共13页
EDA设计报告数字秒表设计Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

EDA设计报告数字秒表设计Word文档格式.docx

《EDA设计报告数字秒表设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《EDA设计报告数字秒表设计Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

EDA设计报告数字秒表设计Word文档格式.docx

3MHz->

100Hz分频模块、48MHz->

1KHz分频模块、十进制计数模块、六进制计数模块、锁存模块、数码管显示模块。

3MHz->

100Hz分频模块:

由于系统的精度是0.01s,因此要设置周期为100Hz的时钟脉冲。

又因为数字秒表输入的脉冲为3MHz,所以外界每输入3000Hz的脉冲系统就输出一个频率,这时频率的时间周期刚好为0.01s,还有就是实现48MHz—>

1KHz的功能给显示模块时钟信号的,而分频模块就是完成这样的功能。

48MHz—>

1KHz分频模块:

用于数码管显示的分频,使计数显示更清晰、更准确。

锁存模块:

用来实现计数的锁存,功能实现就是实现计数的暂停。

数码管显示模块:

用数码管来精确显示计数结果。

2.3、优劣分析及方案选定

LED灯显示是以二进制的形式显示出来的,而数码管则直接显示数字,所以数码管显示来的更直观,再一个方案一涉及到元件例化语句,各分模块要实现元件调用和映射。

由于本人对元件例化语句不熟,所以方案一不考虑。

所以我选用方案二来完成本设计。

2.4采用的硬件平台及主要技术

本设计采用的硬件平台是编程片上系统,简称SOPC。

主要技术有以处理器和实时多任务操作系统(RTOS)为中心的软件中心技术、以PCB和信号完整性分析为基础的高速电路设计技术。

3.模块设计过程

3.1、3MHz->

100Hz分频模块的设计

实现3MHz—>

100Hz的分频,模块图

程序代码:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityszmb3is

port(clk_3m:

instd_logic;

clk_100:

outstd_logic);

--定义输入输出端口,输入为3MHz,输出为100Hz

endszmb3;

architectureoneofszmb3is

signalclk_100_r:

std_logic;

signalcount:

integerrange0to10#15000#;

--用于计数

begin

process(clk_3m)

ifclk_3m'

eventandclk_3m='

1'

then--上升沿

ifcount=10#15000#thencount<

=0;

clk_100_r<

=notclk_100_r;

--当count=10#1500#时,本身取反,输出为零

elsecount<

=count+1;

--计数加一

endif;

endprocess;

clk_100<

=clk_100_r;

endone;

3.2、48MHz—>

1KHz分频模块的设计

实现48MHz—>

1KHz的分频,模块图

程序代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

entityfp1is

port(clk_48m:

instd_logic;

clk_1k:

outstd_logic

);

----定义输入输出端口

endfp1;

architecturebehavoffp1is

signalclk_1k_r:

std_logic;

signalcount:

std_logic_vector(14downto0);

--用于计数

begin

process(clk_48m)

ifclk_48m'

eventandclk_48m='

then

ifcount="

110000000000000"

count<

=(others=>

'

0'

);

--当count="

时取反

clk_1k_r<

=notclk_1k_r;

--否则的话计数加一

clk_1k<

=clk_1k_r;

endbehav;

3.3、十进制计数模块的设计

用来实现0.01s、0.1s、1s和1min单位单元的计数。

模块图

entityszmb2is

port(clk,rst:

cq:

outstd_logic_vector(3downto0);

cout:

--定义输入输出端口

endszmb2;

architectureoneofszmb2is

signalcq1:

std_logic_vector(3downto0);

signalcout1:

--定义计数

process(clk,rst)

ifrst='

thencq1<

="

0000"

;

cout1<

='

--复位清零

elsifclk'

eventandclk='

then

ifcq1<

"

1001"

=cq1+1;

--上升沿时,若cq1小于9的话,自身加一,不进位

elsecq1<

--否则的话,cq1为零,计数进位加一

cq<

=cq1;

cout<

=cout1;

3.4、六进制计数模块的设计

用来实现10s、10min为单位单元的计数。

entityszmb1is

endszmb1;

architectureoneofszmb1is

0101"

--若有上升沿,且cq1小于5的话,本身加一,计数为零

3.5、锁存模块的设计

entityscqis

port(gate:

d:

instd_logic_vector(23downto0);

data:

outstd_logic_vector(23downto0));

end;

architecturetwoofscqis

signaldata1:

std_logic_vector(23downto0);

process(gate,d)

ifgate='

data1<

=d;

--若门信号有脉冲,则门打开,d信号赋给data1

endif;

data<

=data1;

endtwo;

3.6、数码管显示模块的设计

USEIEEE.STD_LOGIC_Arith.ALL;

USEIEEE.STD_LOGIC_Unsigned.ALL;

ENTITYszmb4IS

PORT(

clk_1:

INSTD_LOGIC;

data:

INSTD_LOGIC_VECTOR(23DOWNTO0);

dig:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);

seg:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)

ENDENTITY;

ARCHITECTUREoneOFszmb4IS

SIGNALseg_r:

STD_LOGIC_VECTOR(7DOWNTO0);

--用于缓存对当前BCD码译码的结果

SIGNALdig_r:

--用于缓存位码信息

SIGNALdisp_dat:

STD_LOGIC_VECTOR(3DOWNTO0);

--缓存待显示的BCD码

SIGNALcount:

STD_LOGIC_VECTOR(2DOWNTO0);

--用于计数

BEGIN

dig<

=dig_r;

seg<

=seg_r;

PROCESS(clk_1)

IFRISING_EDGE(clk_1)THEN

--上升沿来时,计数加一

ENDIF;

ENDPROCESS;

PROCESS

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

当前位置:首页 > 初中教育 > 数学

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

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