数字电路设计举例.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数字电路设计举例.doc》由会员分享,可在线阅读,更多相关《数字电路设计举例.doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、7.5 数字电路设计举例7.5.1数字系统的实现方法l 数字系统的实现方法大致有以下几种 采用通用的集成逻辑器件(一般为多片、MSI)组成传统方法。实际应用比较广泛。目前仍被使用。其弊端: 系统的性能需待电路搭建完毕,才可测试;设计、调试难度大,研制周期长不利于新产品抢占市场!。 设计过程中,设计者的灵活性很小;搭成的系统所需芯片种类多、数量大(而且一旦不成功,需要改变设计,原有的印制电路板甚至包括器件都将全部报废),因此,系统的体积和成本都很大。 采用单片机作为核心来实现特点:所用器件少,使用灵活,也得到广泛应用。但,工作速度较低。因为,在单片机中指令必须被逐条执行顺序执行(而硬件是可以并发
2、执行的),所以此法不如其它方法直接采用硬线逻辑的方法速度快具体实现方法,将在后续课程单片机中介绍。 采用复杂PLD(CPLD或FPGA)实现 一个复杂的数字系统,只需一片或几片即可实现特点:系统体积小、功耗低、可靠性高、易于进行修改、速度较高等优点。成为当今实现数字系统的首选方案。 设计功能完整的数字系统芯片此法可以看作是上一种方法的延伸/升级(用一片系统级芯片SOC实现)无论是用CPLD/FPGA实现还是用系统级芯片SOC实现,都需要借助EDA开发软件来设计,只是后者的芯片集成度更高、功能更加强大,设计更为复杂。借助EDA开发软件,用PLD设计实现电子系统,给数字系统的设计带来了深刻的变革u
3、 基于芯片的设计尤其是采用功能极其强大的新型PLD时,而不是对电路板的设计;可以直接通过设计PLD芯片来实现数字系统的功能,将原来由电路板设计完成的大部分功能放在PLD芯片的设计中进行。u 设计者的灵活性; 允许设计者定义器件的内部逻辑和引脚根据实际情况和要求,自己定义!,同样的芯片可以实现功能各异的数字系统!u 系统设计的工作量和难度因为许多工作已经可以交给开发软件来做了 u 工作效率因为设计过程的每一步都可以仿真验证,出现错误可以及时纠正、调整。,加速了新产品的研制过程;u 芯片数量,使系统的体积、功耗,系统的可靠性因为芯片的集成度愈来愈高,功能愈来愈强大。作为后续课程的基础,同时也是课程
4、设计的基础,本节着重介绍采用CPLD实现数字系统的方法着重介绍用Verilog HDL语言建模,借助开发软件进行数字系统设计的方法。7.5.2数字电路设计举例例1. 设计一个定时器。(P377 Exam7.5.1)要求具有下列功能:复位/启动nRST表示低有效:nRST表示信号为0时,Restart暂停/连续nPAUSE表示低有效:nPAUSE表示信号为0时,PAUSE定时器完成的功能0定时器复位(置初始值24)(if“n”,Reset)11定时器开始倒计时减计数,减至零保持不变不同于一般的减计数器!,且令输出Alarm=110定时器暂停计时需设立计数使能控制端(if“n”,PAUSE)解(1
5、) 设计要求分析实际这里还需要一个振荡器来产生周期性的时钟脉冲而输出也应经过锁存显示译码电路与数码管相连,Alarm信号则应当送至一个蜂鸣器,以便在定时到点的时候发出提示音。这里都略去。依题意, 减计数器; nRST相当于“预置数控制”置数8h24(BCD码的24D),低有效预置数,优先权最高; nPAUSE相当于“计数使能控制”,低有效暂停; 设置Alarm输出端,以便提示“定时时间到”。(2) Verilog HDL源程序:module Timer24s(nRST, nPAUSE ,CP, Alarm, Q1,Q0); input nRST , nPAUSE, CP; output Ala
6、rm; output 3:0 Q1, Q0;reg 3:0 Q1,Q0;assign Alarm=(Q1,Q0=0)&nPAUSE; /减计数至0且不要暂停时,提示“定时结束”。 /当输出信号时,若按下nPAUSE(=0),也可解除报警。always(negedge nRST or posedge CP) if(nRST)Q1,Q0=8h24此处若写作“8d24”则实际将置数为“0001_1000”; /nRST=0,则置数24D else if(nPAUSE)Q1,Q0=Q1,Q0; /nPAUSE=0,则暂停计数 else if(Q1,Q0=0)Q1,Q0=0; /减计数至0(全0),则停
7、止计数 else if(Q0=0) /个位为0(而十位非0),需向十位借1,个位变9 begin Q1=Q1-1; Q0= 9; end else /个位不为0,则只需个位减1 Q0=Q0-1;endmodule (3) ISE仿真测试(Lecture7_5, Ex7_5_1)例2. 设计一个电子钟(具有时、分、秒计时;24小时制;可校正分钟、小时)。(要求:见P379 )解(1) 设计要求分析 主体:同步加计数器(8421BCD码计数器)秒计数、分计数:60进制;小时计数:24进制;其中,分计数、小时计数,“可校正分、时”通过改变使能端的状态,实现快速加计数这种做法使得时间预置操作简便易行只
8、需改变一个键就可以校正时间不需要很多输入键,可以减小系统的体积。,来校正分、时 显示译码电路:将8421码转换为驱动7段显示数码管(共阴极)的信号(2) 分层次结构框图 组成框图:P379 图7.5.2; 层次结构图:P380图7.5.3注意:此图中略去了译码显示部分实际应用时,这部分可以另外处理,例如,采用动态扫描的方式来显示,详见下例 系统框图以此确定顶层模块的I、O端口。(3) 具体的 Verilog HDL描述 顶层模块top_CLOCK通过结构描述,将子模块互连,构成顶层模块顶层模块的输入、输出端口的设置取决于系统的要求。框图程序module top_CLOCK(nCR, CP, A
9、dj_H, Adj_M, DH1,DH0, DM1,DM0, DS1,DS0); input nCR,CP,Adj_H,Adj_M; output 6:0 DH1,DH0, DM1,DM0 , DS1,DS0;wire EN_M,EN_H,CO_S,CO_M; /定义中间节点assign EN_M=(Adj_M)?1:CO_S;assign EN_H=(Adj_H)?1:CO_M;cnt_60_disp u0(nCR,CP,1,DS1,DS0, CO_S); /子模块又是由若干个低层模块构成。cnt_60_disp u1(nCR,CP,EN_M,DM1,DM0, CO_M);cnt_24_di
10、sp u2(nCR,CP,EN_H,DH1,DH0);endmodule 显示译码模块框图程序module bin_led7(Bin, Led7); input 3:0 Bin; output 6:0 Led7;reg 6:0 Led7;always(Bin)case(Bin)4h0:Led7=7b; 注意说明数据的位宽 /显示“0”4h1:Led7=7b; /显示“1”4h2:Led7=7b;4h3:Led7=7b;4h4:Led7=7b;4h5:Led7=7b;4h6:Led7=7b;4h7:Led7=7b;4h8:Led7=7b;4h9:Led7=7b;4ha:Led7=7b;4hb:L
11、ed7=7b;4hc:Led7=7b;4hd:Led7=7b;4he:Led7=7b;4hf:Led7=7b;endcaseendmodule 计数器模块框图程序module cnt_24(nCR,EN,CP, Q1,Q0); input nCR,EN,CP; output 3:0 Q1,Q0; reg 3:0 Q1,Q0;always(negedge nCR or posedge CP)if(nCR)Q1,Q04h2|Q04h9|Q1,Q0=8h23) Q1,Q0=4h9)不必加Q1=1的条件了。因为这里的“else”已经意味着该数在23以内了。 /逢十进一 begin Q1=Q1+1; Q
12、0=0; end else Q0=Q0+1;endmodule框图module cnt_60(nCR,CP,EN, Q1,Q0, Cout); input nCR,CP,EN; output 3:0 Q1,Q0; output Cout;reg 3:0 Q1,Q0;assign Cout=(Q1,Q0=8h59)&EN; /小时计数器所没有的分、秒计数器都要有进位输出always(negedge nCR or posedge CP)if(nCR)Q1,Q04h5|Q04h9|Q1,Q0=8h59) Q1,Q0=0; /异常情况,或者计数至最高状态,则复位else if (Q0=9)不必加Q1=
13、5的条件了! /逢十进一 begin Q1=Q1+1; Q0=0; endelse Q0=Q0+1;endmodule 计数_显示译码模块1框图:(a)方法一:用原理图输入法连接相关模块(b)方法二:结构描述(元件例化调用低层模块cnt_60、bin_led7)module cnt_60_disp(nCR,CP,EN, D1,D0, CO); input nCR,CP,EN; output 6:0 D1,D0; output CO;wire 3:0Q1,Q0;cnt_60 u0(nCR,CP,EN,Q1,Q0,CO);bin_led7 u1(Q0,D0); /每位十进制数需要一套显示译码电路,
14、然后送往一个LED数码管显示bin_led7 u2(Q1,D1);endmodule例3. (补充)设计一个4 LED数码管(共阴极)动态扫描显示译码电路。(1) 问题的引出由上例可见,在需要同时显示多位数字时,如果每一位数字都分别采用一个译码电路,则势必导致电路的输出端太多(如上例,仅仅连接数码管的输出端子就需要7*6每个数码管有段需要个端子,总共位数字,所以共需根接至数码管的信号线。=42个!)(2) 解决的办法及结构框图采用动态扫描译码显示控制电路的原理(画示意图) 共阴极数码管:当且仅当阴极(com端)为“0”时,a g的信号有效,能够显示相应数码(发光)。 人眼有视觉暂留如果能够实现
15、快速切换,依次点亮各个LED,则肉眼并不能觉察看起来就像同时显示。具体做法 数码管的输入端连接将所有的LED之ag全部并联全部数码管共同拥有7个输入端ag;但,每个数码管的“com”(阴极)输入端分别引出每个数码管的“com”是独有的。图中每个数码管的com端未标出。实际每个数码管的ag信号能否起作用取决于该数码管的com端是否为0。 动态扫描译码显示控制电路7段显示译码电路只需一套其输出将送至数码管的ag;而其输入则依次来自几个不同的数据源(对本例为4个:D3D0)由数据选择器控制;同时,与数据选择器选择的数据源相对应,通过一个顺序脉冲产生电路,依次产生相应的一个低电平送至该数码管的“com
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字电路 设计 举例
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内