资源描述
数字电子中的设计(电工电子课程设计)
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
目录
一、 课程设计整体的认知
1、 整体功能要求
2、 系统结构要求
3、 电器指标
4、 扩展指标
5、 设计条件
二、 电路的具体设计
1、 工作原理
2、 秒脉冲信号发生器
3、 分频器
4、 计数电路
5、 校时电路
6、 整点报时电路
7、 秒表电路
8、 电子钟电路
9、 闹钟电路
三、 电路的调测
1、 一一用仿真软件对各个模块的功能进行功能仿真
计数电路
校时电路
整点报时电路
秒表电路
电子钟电路
闹钟电路
2、 将各个模块集合衔接好
3、 集成好后再进行仿真(测试整体功能)
四、小结
一、整体功能的要求
数字电子钟应该能以秒为最小的时间单位计时,同时应能用数字直观显示当前的时、分、秒。
二、系统结构要求
数字电子钟的系统结构方框图如下图。图中秒信号电路产生1HZ标准计时信号,计时电路记录当前的时、分、秒值,数字显示以数字方式显示出当前的时间值,音响报时电路用于整点报时,时分调整电路用于校正当前的时间。
时、分调整
秒信号
音响报时
数字显示
计时电路
RESET
系统复位
三、电气指标
1、 最小计时时间单位为1S。
2、 秒和分计时范围为00~59,小时计时范围为0~23,并可手动将小时计时范围转换为1~12。
3、 可手动校正时、分。
四、扩展指标
1、 具有整点报时功能,要求每个整点前鸣叫4次低音(500HZ),59秒时鸣叫1次高音(1000hz)
2、 通过转换开关,可使电子钟具有秒表功能,最小计时时间单位为10ms,最长计时时间单位为59min。
五、 设计条件
1、 电源条件:使用+5v电源
2、 在foundation仿真软件的条件下选择器件,也可结合vhdl语言开发自己的逻辑器件来完成电路。
3、 在设计前要先学会foundation软件的使用
六、电路的具体设计:
1、 工作原理:
数字钟主要由一下几部分组成:
振荡器和分频器组成的标准秒信号发生器;60进制分;秒计数器及12进制(或24进制)时计数器;时、分、秒的译码显示电路部分;校时电路、由这些基本的单元组成的框图如下图:
或
秒计数器
时计数器
分计数器
时校正
分校正
振荡器
单次脉冲
分频器
秒译码器
分译码器
时译码器
秒显示器
分显示器
时显示器
数字钟原路框图
数字钟的工作原理是:由多谐振荡器产生的稳定的高频脉冲经分裂后得到1hz的标准信号,作为秒计数器的技术脉冲;秒计数器计满60后,向分计数器发出进位信号;分计数器计满60后,向时技术器发出进位脉冲;小时按24进制或12翻1规律计数.计数器的输出分别驱动译码电路,数码管显示时间。当计数器出现误差或电源刚接通时,可拨动时、分校正开关进行校正。
3、分频器
分频器的功能主要有两个:一是产生标准秒信号;二是提供给功能扩展电路所需的信号,如仿电台报时用的1000hz的高音频信号和500hz的低音频信号等.用3级M=10的计数器对1000hz信号分频,得到1hz标准信号.同时如图所示,由555输出的2000hz信号可直接作为高音频信号,从第一级取出2分频信号即得到1000hz的高音频,再取2分频得到500hz低音频,在1000hz的基础上取3个10分频得到1hz的标准秒脉冲信号.
1hz的分频电路
1000hz和500hz的分频电路
4, 计数器电路
电子钟的分和秒的计时采用60进制计数方式,其计数规律00……01……58……59
00……,选用十进制或16进制计数器两级级联计数器即可构成M=16的计数器。
这里我选择74160
74160是一个4位二进制的计数器,它具有异步清除端与同步清除端不同的是,它不受时钟脉冲控制,只要来有效电平,就立即清零,无需再等下一个计数脉冲的有效沿到来。
具体功能如下:
1.异步清零功能
只要(CR的非)有效电平到来,无论有无CP脉冲,输出为“0”.在图形符号中,CR的非的信号为CT=0,若接成七进制计数器,这里要特别注意,控制清零端的信号不是N—1(6),而是N(7)状态。其实,很容易解释,由于异步清零端信号一旦出现就立即生效,如刚出现0111,就立即送到(CR的非)端,使状态变为0000.所以,清零信号是非常短暂的,仅是过度状态,不能成为计数的一个状态。清零端是低电平有效.
2.同步置数功能
当(LD的非)为有效电平时,计数功能被禁止,在CP脉冲上升沿作用下D0~D3的数据被置入计数器并呈现在Q0~Q3端。若接成七进制计数器,控制置数端的信号是N(7)状态,如在D0~D3置入0000,则在Q0~Q3端呈现的数据就是0110。
74160集成块:
具体功能表如下:
用74160采用同步级联预置零法构成60进制计数器,同步级联的好处:
同步计数器的寄存器时钟是相同的,这样所有的寄存器都在同一时刻发生变化。而异步计数器的寄存器时钟可能是不同的,这使得各个寄存器的值可能不在同一时刻发生变化,所发异步计数器的延迟比较大,工作速度比较低
60进制计数器图
60进制计数器需要做两个,因为分和秒都是用60进制计数器。
下图是60进制计数器在foundation软件的仿真结果:
同样的方法再做一个24进制计数器,如下图:
图中的非门是在电路的校时调试阶段加入的逻辑关系,与本模块并无太大的逻辑关系
本模块的仿真结果如下图:
时计数器具有两种计时方式:
一是生活习惯中的计时规律,即“12翻1”特殊进制计数器;
二是24进制计数器,其技术规律与M=60一样,只需要用复位控制方式将计数器级联即可实现。
12翻1的特殊进制计数器,当数字钟的计时器运行到12时59分59秒时,秒的个位计数器再接受一个秒脉冲时,数字钟应自动显示为01时00分00秒,实现日常生活中习惯用的计时规律。从12翻1小时时序表可以看出,时计数器的个位有0~9十个状态,十位只有0和1两种状态,因此时十位可用1个D触发器来实现两种状态。时的个位虽然只有0~9十个状态,但其重复周期需要输入13个时钟脉冲,可以看出时计数器的状态要发生两次跳变;一是计数器计到M=10,即个位计数器的状态为1001后变为0,十位计数器的QE=1;二是计数计到M=12后,十位变为“0”,即QE=0个位状态由0010变到0001.设计12翻1电路时,首先应选用适当的计数器型号,然后再进一步根据时序逻辑设计。
这里我采用VHDL语言的形式来编写12与24进制的转换
源程序如下:
library ieee;
use ieee。 std_logic_1164。all;
entity cntm12 is
port(H1A:in std_logic;
H1B:in std_logic;
H1C:in std_logic;
H1D:in std_logic;
H2A:in std_logic;
H2B:in std_logic;
H2C:in std_logic;
H2D:in std_logic;
H1AOUT:out std_logic;
H1BOUT:out std_logic;
H1COUT:out std_logic;
H1DOUT:out std_logic;
H2AOUT:out std_logic;
H2BOUT:out std_logic;
H2COUT:out std_logic;
H2DOUT:out std_logic;
AMORPM:out std_logic);
end cntm12;
architecture beh of cntm12 is
signal temp_in : std_logic_vector (7 downto 0);
signal temp_out: std_logic_vector (8 downto 0);
begin
temp_in 〈=H2D&H2C&H2B&H2A&H1D&H1C&H1B&H1A;
process(temp_in)
begin
case temp_in is
when”00000000” =〉 temp_out〈="100010010";
when"00000001” =〉 temp_out〈="100000001”;
when"00000010” =〉 temp_out<=”100000010”;
when"00000011” =〉 temp_out〈=”100000011";
when"00000100" => temp_out〈="100000100";
when"00000101” =〉 temp_out〈="100000101”;
when"00000110" => temp_out<=”100000110”;
when"00000111" =〉 temp_out〈="100000111”;
when”00001000” =〉 temp_out<="100001000”;
when”00001001” =〉 temp_out<="100001001";
when"00010000" => temp_out<="100010000”;
when"00010001" =〉 temp_out〈="100010001";
when”00010010” => temp_out<=”000010010";
when"00010011” =〉 temp_out〈="000000001";
when”00010100” => temp_out〈="000000010";
when”00010101” => temp_out<=”000000011”;
when"00010110" =〉 temp_out<=”000000100”;
when”00010111” => temp_out〈="000000101”;
when"00011000” =〉 temp_out〈=”000000110";
when”00011001” =〉temp_out<="000000111”;
when"00100000” =〉 temp_out〈=”000001000”;
when"00100001" =〉temp_out〈="000001001";
when”00100010” =〉 temp_out<=”000010000”;
when"00100011” =〉 temp_out<=”000010001";
when others =〉temp_out<="000000000";
end case;
AMORPM〈=temp_out(8);
H2DOUT〈=temp_out(7);
H2COUT〈=temp_out(6);
H2BOUT〈=temp_out(5);
H2AOUT 〈=temp_out(4);
H1DOUT<=temp_out(3);
H1COUT〈=temp_out(2);
H1BOUT〈=temp_out(1);
H1AOUT<=temp_out(0);
end process;
end beh;
软件仿真结果:
HOURSHIQA :24进制的时十位
HOURGEQA :24进制的时个位
H2AOUT :12进制的时十位
H1AOUT :12进制的时个位
由上图显示仿真的结果显示是正确的
5、控制电路部分:
数字钟在接通电源或计时时出现误差时,需要进行校正时间,这是数字钟应该具备的一种基本功能,有时为简单起见,只设时和分的校正。对校时电路的要求是:在进行时校正时不影响分、秒计时,同理在进行分校时是不影响秒计时。校时脉冲可用1hz标准秒脉冲信号、消除抖动开关、单脉冲按键等,根据需要由转换开关接入电路、校正完毕开关复位,使计数器转入正常计时状态。
正常计数时,分计数器的cp脉冲来自秒的进位信号cp1,时计时的cp脉冲来自分的进位信号.在校时时,需要加入一个校时脉冲cp’。为加快校时速度,可选用校时脉冲为频率为2hz,4hz,8hz等。
根据与非门的关系设计时与分的校时逻辑关系;设计的过程用cp控制进位信号;让秒信号的进位信号作为分计时器的CP信号,同理让分的进位信号作为时计时器的CP信号,同时让分的进位信号作为整点闹钟的部分信号
校时、校分电路:
校时校分逻辑电路
6、 整点报时电路
电子钟走到整点时即发出音响。通常按照4低音、1高音的顺序发出间断声响,以最后一声高音结束为整点时刻。只要把整点报时的时刻,即各计数器的状态分拣出来,控制报时音响电路即可达到报时效果。下面分析计时器的报时状态;分十位计数状
态为QDQCQBQA=0101,分个位的计数状态为QDQCQBQA=1001,即
(59)10分时准备报时,等待秒的报时信号,等待秒的报时信号到来即59分51秒开始鸣音报时.设低音报时频率为500hz,高音报时频率为1000hz,低音音响发生在59分51秒、53秒、55秒、57秒,没一声音响持续1秒,间歇1秒钟。
取秒计数器的信号分别在51秒、53秒、55秒、57秒、59秒时相或再与分计数器的进位信号相与,最后计数时再设计一个与非门电路,分别输入1000hz、500hz,根据适当的条件使用适当的频率,这样即得到整点报时的4声低音、1声高音的报时效果.
电路中的电路图如下:
整点报时软件仿真结果:
整点报时电路仿真结果分析:
HOURSHIA :时十位
HOURGEA :时个位
MINSHIA :分十位
MINGEA :分个位
SECSHIA :秒十位
SECGEA :秒个位
仿真值:HOURGE 是5,也正是5点时报时.
Laba代表接喇叭的接口,此时出现5个高电平,最后一个的频率比前几个都要大,说明是4高音1低音。
7、 闹钟电路
本闹钟体系设计了一个时和分两个计时器,用手动的秒脉冲作为计时器的cp,让分计数器的进位信号作为时计数器的cp,这样就达到了手动定时的目的。
在整个电路的糅合时,只需要将闹钟电路的时和分计数器的数值与时钟电路时、分计数器的时、分相互比较,只要两个数字的同伙值为1,则达到了时、分两位相同的目的。
外部电路:
内部电路:
闹钟比较器外电路:
主要起到将时钟信号与闹钟信号比较的作用,将相似的信号做同或运算
闹钟比较器内电路:
闹钟的内电路主要就是一个比较器
学号报时电路
数字钟在指定是的时刻发出信号,或驱动音响电路“闹时",或对某装置的电源进行接通或断开“控制"。不管是闹时还是控制,都要求时间的准确,即信号的开始时刻与持续时间必须满足规定的要求。
要求14:20发出闹事信号,4低1高音。
因为14:20对应数字钟的时十位状态为QAQBQCQD=0001,时个位为QAQBQCQD=0100,分十位的状态为QAQBQCQD=0001,分个位为QAQBQCQD=1001。
集成外部状态:
集成块内部电路:
学号报时软件仿真结果:
根据上图显示的结果给出结论:
在14:19:51时开始第一次低音闹钟,以后每次到这个时间时就会闹钟,达到了与其的试验目的,本模块顺利完成。
显示选择电路:
主要功能是选择显示闹钟还是正常显示时钟;
显示选择外部电路
显示选择内电路:
显示选择电路是选择74153数据选择器来做的,采用8片74153级联来实现数据的选择
最后完成的是译码显示电路:
这部分电路主要用到数据选择器74153,74139,74161,这些器件foundation软件里都有,不需要我们设计。但译码器7448本软件里面不提供,需要我们自己设计。
在数字系统中,为了用数码管显示十进制数字,首先要将二—十进制代码送至显示译码器,再由译码器的输出去驱动数码器。由于各种显示器的工作方式不同,对译码器的要求也不一样.要求译码器能将每一组BCD码翻译成显示器件所需要的七位二进制代码。半导体数码管既有共阳结构,也有共阴结构,它们要求所配用的显示译码器的输出有效电平为低电平或高电平。7448是8421BCD七位显示译码器。根据7448的功能表我用VERILOG 语言设计了7448.
代码如下:
module decode4_7(decodeout,indec);
output[6:0] decodeout;
input[3:0] indec;
reg[6:0] decodeout;
always @(indec)
begin
case(indec)
4’d0:decodeout=7’b1111110;
4’d1:decodeout=7’b0110000;
4’d2:decodeout=7'b1101101;
4'd3:decodeout=7’b1111001;
4'd4:decodeout=7’b0110011;
4’d5:decodeout=7’b1011011;
4’d6:decodeout=7’b1011111;
4’d7:decodeout=7'b1110000;
4’d8:decodeout=7’b1111111;
4'd9:decodeout=7’b1111011;
default: decodeout=7’bx;
endcase
end
endmodule
主体电路的装调:
由前面的数字钟组成电路框图按照信号的流向分级安装,逐级级联。这里的每一级是指组成数字钟的各功能电路。
级联时如果出现时序配合不同步,或尖峰脉冲干扰,引起逻辑混乱,可以增加多级逻辑门来延迟。
画数字钟的主体逻辑电路图。经过联调并纠正设计方案的错误和不足之处后,再测试电路的逻辑功能是否满足设计要求。最后画出满足设计要求的总体逻辑电路图。
实验小结
经过长达两个星期的设计与思考,我终于完成了最后的设计任务.
开始拿到题目,觉得很简单,就是几个计数器、选择器、控制电路、译码显示电路而已,但正真设计下来,觉得问题还蛮多的。尤其在最初的方案确定上.一开始选择7492和7490作为计数器,当电路已经设计好了时,同学说foundation软件不提供7492和90这两个器件,要是想用的话还得自己设计,这让我很是郁闷,感觉自己的心血白费了,后来改用74160作。心想这回没问题了吧,于是静下心来顺理逻辑关系,当计时器整体设计好了时,觉等异步复0法不是最理想的方法,于是又一次改变了方案,改用同步置0发来设计。直到最后也是采用同步置0法设计。
在设计的初期要考虑周到,否则后期改进很困难。应该在初期就多思考几个方案,进行比较.论证,选择最适合的方案动手设计.总体设计在整个设计过程中很重要,应该花较多的时间在上面。方案去定后才开始设计,设计时,多使用已经学习过的方法,如列真值表,化简路基表达式,要考虑整体的因素,不能只看一步,做一步。在整体设计都正确后,再寻求简化的方法.
在设计某些模块的时候无法把握住整体,这时可以先经行小部分功能的实现,在此功能上经行改进,虽然可能会多花一点时间,但这比空想要有效得多.尽可能使电路连线有序,模块之间的关系清楚,既有利于修改,也有利于与别人交流,如果电路乱得连自己都看不懂,那在此基础上的改进和扩展就会非常的困难了。在设计电路之前应该有较好的电路理论基础,整个试验都是在理论的基础指导下完成的,设计过程中使用到了很多理论课上学到的东西,原来学的时候只知道这些东西理论方面的东西,但没有实际运用,经过这次课程设计,不仅动手能力得到了锻炼,理论知识也得到了进一步的巩固。
附录一:整体电路图
附录二: 参考书目
1、《数字电路与系统设计》 张顺兴 主编
2、《电子电路测试与试验》 朱定华 陈林 吴建新 编著
3、《电子电路课程设计》 张豫滇 苏起虎 林彦杰 编著
4、《电工电子基础试验》 王玉秀 李家虎 张学军 朱震华 编
39
展开阅读全文