电子课程设四位十进制计数器Word文档格式.docx

上传人:b****2 文档编号:5221717 上传时间:2023-05-04 格式:DOCX 页数:18 大小:361.07KB
下载 相关 举报
电子课程设四位十进制计数器Word文档格式.docx_第1页
第1页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第2页
第2页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第3页
第3页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第4页
第4页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第5页
第5页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第6页
第6页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第7页
第7页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第8页
第8页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第9页
第9页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第10页
第10页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第11页
第11页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第12页
第12页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第13页
第13页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第14页
第14页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第15页
第15页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第16页
第16页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第17页
第17页 / 共18页
电子课程设四位十进制计数器Word文档格式.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

电子课程设四位十进制计数器Word文档格式.docx

《电子课程设四位十进制计数器Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子课程设四位十进制计数器Word文档格式.docx(18页珍藏版)》请在冰点文库上搜索。

电子课程设四位十进制计数器Word文档格式.docx

测频信号控制发生器

模块功能

1)计数器:

实现十进制计数功能。

2)锁存器:

锁存信号。

3)频率信号控制发生器:

输入端clk收到1Hz信号后,其输出端testen控制各个计数器的使能,clr_cnt控制各个计数器的清零,load控制锁存器内数据的输出。

4)译码驱动电路:

将锁存器输出的BCD码译码,译码后输送到译码显示器件。

5)数码管显示:

显示待测信号的频率值。

设计思路

频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。

这就要求testpl的计数使能信号tsten能产生一个1秒脉宽的周期信号,并对频率计的每一计数器cnt10的使能端ena进行同步控制。

当tsten为高电平"

1"

时,允许计数;

为低电平"

0"

时停止计数,并保持其计数结果。

在停止计数期间,首先需要一个锁存信号load的上跳沿将计数器在前1秒种的计数值锁存进16位锁存器reg16b中。

锁存信号之后,必须有一个清零信号clr_cnt对计数器进行清零,为下1秒的计数操作做准备,然后由数码管显示出来。

三、选择器件

电路中的所有器件都是VHDL语言设计生成的,所以无通用常规器件。

四、功能模块

分频器

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitydivis

port(clk_in:

INstd_logic;

div_outb,div_outc:

outstd_logic);

enddiv;

ARCHITECTUREaofdivis

signalfre_nb:

integerrange0to25000000;

signalfre_nc:

integerrange0to100000;

signalclk_tmpb:

std_logic;

signalclk_tmpc:

begin

div_outb<

=clk_tmpb;

div_outc<

=clk_tmpc;

process(clk_in)

iffalling_edge(clk_in)then

iffre_nb>

24999999then

fre_nb<

=0;

clk_tmpb<

=notclk_tmpb;

else

=fre_nb+1;

endif;

iffre_nc>

99999then

fre_nc<

clk_tmpc<

=notclk_tmpc;

=fre_nc+1;

endprocess;

enda;

逻辑功能:

将50MH分频为单位脉冲1Hz和扫描频率。

十进制计数器

entitycnt10is

port(clk:

instd_logic;

clr:

ena:

cq:

outintegerrange0to9;

carry_out:

outstd_logic);

endcnt10;

architecturebehavofcnt10is

signalcqi:

integerrange0to9;

process(clr,clk,ena)

if(clr='

1'

)then

cqi<

elsif(clk'

eventandclk='

)then

if(ena='

if(cqi=9)then

cqi<

carry_out<

='

;

else

=cqi+1;

0'

endif;

cq<

=cqi;

endbehav;

逻辑功能:

当第一个CNT10计数输出CQ=9时,下一秒时钟上升沿到来时,将产生一个CARRY_OUT信号作为下一个CNT10的时钟信号,同时CQ清零。

依次递推到8个CNT10。

测频控制信号发生器

entitytestctlis

port(

clk:

tsten:

outstd_logic;

clr_cnt:

load:

endtestctl;

architecturebehavoftestctlis

signaldiv2clk:

std_logic;

process(clk)

if(clk'

div2clk<

=notdiv2clk;

process(clk,div2clk)

if(clk='

anddiv2clk='

clr_cnt<

load<

tsten<

=div2clk;

对8个CNT10产生同步使能信号TSTEN;

产生一个清零信号CLR_CNT,计数完成时对4个CNT10清零;

产生一个锁存信号LOAD对锁存器RED16B,对CNT10产生的信号进行锁

16位锁存器

entityreg16bis

port(load:

din:

instd_logic_vector(15downto0);

dout:

outstd_logic_vector(15downto0));

endreg16b;

architectureartofreg16bis

process(load,din)

begin

ifload'

eventandload='

then

dout<

=din;

endprocess;

endarchitectureart;

锁存信号,并将结果输出给SELTIME。

数码管扫描SELTIME

entityseltimeis

din:

daout:

outstd_logic_vector(3downto0);

sel:

outstd_logic_vector(2downto0));

endseltime;

architecturebehavofseltimeis

signalsec:

std_logic_vector(2downto0);

if(clk'

if(sec>

="

100"

sec<

000"

else

=sec+1;

process(sec,din(15downto0))

casesecis

when"

=>

daout<

=din(3downto0);

001"

=din(7downto4);

010"

=din(11downto8);

011"

=din(15downto12);

whenothers=>

null;

endcase;

sel<

=sec;

锁存信号输出给DIN[16..0],然后由SELTIME进行扫描输出,当SEL为”000”时选通第一个CNT10,输出到DELED进行译码输出。

依次类推。

译码器

IIBRARYieee;

ENTITYSEG7IS

PORT(NUM:

INstd_logic_vector(3downto0);

A:

OUTstd_logic;

B:

C:

D:

E:

F:

G:

DP:

OUTstd_logic

);

ENDSEG7;

ARCHITECTUREfunOFSEG7IS

signalled:

std_logic_vector(6downto0);

BEGIN

A<

=led(6);

B<

=led(5);

C<

=led(4);

D<

=led(3);

E<

=led

(2);

F<

=led

(1);

G<

=led(0);

DP<

led<

1111110"

whennum="

0000"

"

0110000"

0001"

1101101"

0010"

1111001"

0011"

0110011"

0100"

1011011"

0101"

1011111"

0110"

1110000"

0111"

1111111"

1000"

1111011"

1001"

1110111"

1010"

0011111"

1011"

1001110"

1100"

0111101"

1101"

1001111"

1110"

1000111"

1111"

ENDfun;

将SELTIME输出的信号译码显示出来。

3-8译码器

LIBRARYieee;

ENTITYdecode3_8IS

PORT(SEL:

INstd_logic_vector(2downto0);

Q:

OUTstd_logic_vector(7downto0)

);

ENDdecode3_8;

ARCHITECTUREaOFdecode3_8IS

Q<

11111110"

whensel=0else

11111101"

whensel=1else

11111011"

whensel=2else

11110111"

whensel=3else

11111111"

ENDa;

将编码后的信号“翻译”出来从而实现所需的输出信号。

五、总体设计电路

电路的整体工作情况及连接关系:

实验箱内部管脚pin_153接div的clk端,同时div的两个输出div_outb和div_outc分别接testctl的clk端和seltime的clk端,testctl的三个输出端tsten、ckr_cnt、load,其中tsten、ckr_cnt分别接到cnt10的ena和clr端,load接到reg16b的load端。

cnt10的clk端接待测信号,对应实验箱的管脚pin_28——IO3,将IO3用导线与IO_CLK连接,四个cnt10的输出端cq[3..0]与reg16b的din[15..0]连接。

最后由reg16b输出的信号经过译码显示电路显示出来。

整体仿真图

根据上图可以频率为10Hz,对应功能仿真波形同样是10Hz,所以仿真结果正确。

管脚分配图

实验箱上的IO_3用导线与IO_CLK连接,其中IO_3对应的是pin_28。

拨动实验箱上的SW17—SW20,IO_CLK输出不同的频率,同时在数码管上显示出对应的频率,设计理论与实际硬件实现相同。

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

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2