碎碎念:做事要有取舍哦,什么重要什么先做,最开始的状态肯定是最好的。
注意:分频器clk分配AF14引脚,下载完后要拨码,数码管才会开始走。
波形仿真时,ctrl+左键选择多个项然后右键分组分为一组。
如果计数不动,检查左边74160的ent,enp,或者可能处于游离态要等一会。
参考书上p202 74194,p206奇数偶数分频电路,p218 74160, p230
目录
实验目的
- 熟悉数码管的显示原理以及数码管译码器7447芯片的使用。
- 用双向移位寄存器74194和门电路设计一个右移模6的扭环计数器,使用LED灯显示输出结果。
- 熟悉同步十进制加计数器74160的应用与设计。使用两片74160和门电路设计一个显示27-35的加计数器。
电路设计
对于7447译码器:
简介: 7447是一种BCD-7段数码管译码器,它的主要功能是将BCD码转换成7段LED数码管的信号。该器件由7个输出引脚和4个输入引脚组成,输出低电平驱动的显示码,以推动共阳极7段LED数码管显示相应的数字。
对于74160计数器:
简介: 74160是十进制加法计数器,采用8421BCD码,能实现异步清零和同步置数。正常计数时,74160的进位输出CO=Q3nQ0n。该器件有低电平有效且在上升沿触发的置数控制端LDN,低电平有效的异步清零端CRN,并行数码输入端D0-D3,计数器状态输出端Q0-Q3,进位信号输出端CO,计数控制端CTT和CTP,输入计数脉冲CP。
对于74194双向移位寄存器:
简介:74194是4位双向移位寄存器,CRN是清零端,M0,M1是工作状态控制端,DSR,DSL分别是右移和左移串行数码输入端,D0-D3是并行数码输入端,Q0-Q3是并行数码输出端,CP是移位时钟脉冲。
右移模6的扭环计数器原理分析: 右移模六,所以74194输出端从左往右数第3位(QC或称Q2)接非门,再接SRS(DSR),S0,CLRN接1,S1接0,CLK给CP输入。
27-35的同步加计数器原理分析: 初态27,末态35,有初态得用反馈置数法。右侧74160表示十位数,左侧74160表示个位数, D’C’B’A’DCBA=0010 0111表示初态,QD’QC’QB’QA’QDQCQBQA=0011 0101表示末态,末态为1的输出接到与非门,再返回给两个74160的LDN端。左侧低位的ENT(CTT),ENP(CTP)接1,右侧的ENT,ENP接左侧的RCC(CO进位),两者的CLRN接1,CLK接同一个CP输入。
在本次实验中,选择74194和74160完成电路设计并生成自定义器件,如下图。
my74194
my74160
波形仿真用原理图
波形仿真
新建vhdl文件,输入以下分频器代码,保存为LowFreqClk,编译后生成器件LowFreqClk。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY LowFreqClk IS
PORT(rst_n : IN STD_LOGIC;
Clk_50M : IN STD_LOGIC;
clk_1Hz : buffer STD_LOGIC;
clk_2Hz : buffer STD_LOGIC;
clk_4Hz : buffer STD_LOGIC;
clk_8Hz : buffer STD_LOGIC);
END LowFreqClk;
ARCHITECTURE Behv OF LowFreqClk IS
BEGIN
PROCESS(Clk_50M,rst_n)
VARIABLE Count:INTEGER ;
BEGIN
IF rst_n = '0' then
Count := 0 ;
clk_8Hz <= '0';
ELSIF Clk_50M'EVENT AND Clk_50M='1' THEN
IF Count >= 3124999 THEN
clk_8Hz <=not clk_8Hz;
Count := 0 ;
ELSE
Count := Count + 1;
END IF;
END IF;
END PROCESS ;
PROCESS(clk_8Hz,rst_n)
BEGIN
IF rst_n = '0' then
clk_4Hz <= '0';
ELSIF Clk_8Hz'EVENT AND Clk_8Hz='1' THEN
clk_4Hz <=not clk_4Hz;
END IF;
END PROCESS ;
PROCESS(clk_4Hz,rst_n)
BEGIN
IF rst_n = '0' then
clk_2Hz <= '0';
ELSIF Clk_4Hz'EVENT AND Clk_4Hz='1' THEN
clk_2Hz <=not clk_2Hz;
END IF;
END PROCESS ;
PROCESS(clk_2Hz,rst_n)
BEGIN
IF rst_n = '0' then
clk_1Hz <= '0';
ELSIF Clk_2Hz'EVENT AND Clk_2Hz='1' THEN
clk_1Hz <=not clk_1Hz;
END IF;
END PROCESS ;
END Behv;
最终原理图如下,用led灯和7段数码管显示结果。(注意低位Q0,高位Q20开始,你的图可能跟我不一样,引脚别接反了)
七段数码管从游离态0开始计数到初态27进入主循环,到末态35时返回初态27,然后循环继续。下面LED灯一共6个状态(1000,1100,1110,0111,0011,0001)成功实现右移模六。
后记
可以给my74160加上reset输入实现手动置数,但是要注意,要有时钟信号同步置数reset才有效。
附录
拨码开关等见第一篇。
知识回顾
环形与扭环形计数器
环形计数器:电路需设置初态,D0-D3必须有标志位,即一位与其他三位状态不同。Q0-Q3作为电路输出不需要附加译码器即可作为控制信号。
n位环形计数器模值为n。
扭环形计数器:电路可以没初态,电路输出需要接非门或与非门作为控制信号。
1个n位的移位寄存器最多构成2n进制的扭环计数器,有2^n-2n个状态没被利用。
利用移位寄存器构成扭环形计数器的规律(右移从左往右数,左移相反,下面以右移为例):
奇数分频电路:将移位寄存器的输出端,从左往右数(即从Q00端开始数) ,第n位和第n-1位通过与非门加到DSR端,则构成了2n-1 进制扭环形计数器。

11000,11100,11110,11111,01111,00111,00011,00010,10001,回到11000。画状态转换图易知Q0状态由之前的Q03决定,故Q03接到右侧DSR。
偶数分频电路:将移位寄存器的第n位输出通过非门加到DSR端,则构成了2n进制扭环形计数器。
左移模10扭环计数器
如上图,Q03Q0Q1Q2Q3状态一共十个:
00000,00001,00011,00111,01111,11111,11110,11100,11000,10000。
加计数器与减计数器
加法计数器:取反馈状态所对应的二进制代码中状态为1的各个触发器Q端的与非表达式。
减法计数器:0有效,接或门。(如果异步末态下一位是1111 1111,则全部接与非门)
74191实现初态24,末态10的减计数器。
末态下一位0000 1001,把其中为0的输出接或门。
清零端和置数端的同步和异步
同步:当CP触发沿到来的时候才能完成清零或置数任务。
异步:通过异步清零输入端或置数输入端来完成清零或置数操作,而与CP信号无关。
比如:24进制加计数,若初态0,同步末态为23,异步末态为24。
反馈清零法与反馈置数法
反馈清零法:在需要构成的M进制计数器中,初态必须为0。
反馈置数法:在需要构成的M进制计数器中,使用的集成计数器为N进制,初态可以为S0~SN-1中的任意状态。
M进制加计数器,使用反馈置数法实现时,同步则末态等于初态加M-1(即使用有效循环状态中的最后一个状态译码产生的反馈信号进行置数)。
M进制加计数器,使用反馈置数法实现时,异步则末态等于初态加M(即使用有效循环状态中的最后一个状态的下一个状态译码产生的反馈信号进行置数)。
时钟信号同步与异步
时钟信号同步还是异步要根据器件来确定。
例如使用反馈清零法实现133进制计数器。
对于74161来说它是16进制计数器,采用异步清零,故CP接法采用异步接法。
末态1000 0100,异步输出要接末态的下一位1000 0101。
而使用74163时,因为它是16进制计数器,采用同步清零,故CP采用同步接法。
末态1000 0100,同步则输出与末态相同。(旧版书上这题有问题)