EDA数字系统设计课件第四章改.ppt
《EDA数字系统设计课件第四章改.ppt》由会员分享,可在线阅读,更多相关《EDA数字系统设计课件第四章改.ppt(75页珍藏版)》请在三一办公上搜索。
1、第4章 典型数字系统分析与设计,数字系统概述数码管动态显示扫描电路原理及设计乘法器的原理及设计除法器的原理及设计方法简易CPU工作原理及设计方法交通信号灯控制器原理及设计数字频率计的原理及设计数字信号发生器的原理及设计,第4章 典型数字系统分析与设计数字系统概述,4.1 数字系统概述,采用数字电子技术实现数字信息处理、传输、控制的数字逻辑单元集合称为数字系统。,数字系统一般包括数据处理器和控制器两个部分,数据处理器由寄存器和组合电路组成。寄存器用于暂存信息。组合电路实现对数据的加工和处理。在一个操作步骤,控制器发出命令信号给数据处理器,数据处理器完成命令信号所规定的操作。在下一个操作步骤,控制
2、器发出另外一组命令信号,命令数据处理器完成相应的操作。通过多步操作(操作序列),数字系统完成一个操作任务,控制器接收数据处理器的状态信息及外部输入来选择下一个操作步骤。,控制器决定数据处理器的操作和操作序列。控制器决定操作步骤,可以记忆当前步骤,也可以确定下一步骤,因此控制器中包含存储器,用来记忆操作步骤,及时根据外部输入和数据处理器的状态信息来确定下一个操作步骤。,4.1 数字系统概述采用数字电子技术实现数字信息处理、传输、,控制器,数据处理器,外输入,控制信息,状态信息,输入数据,输出数据,无论数据处理器还是控制器都是根据其功能特点来划分的,归根结底是由数字电路构成的。一个实际的数字系统可
3、能简单也可能复杂。如果一个数字系统没有控制器,通常称其为子系统,一个复杂数字系统可能由多个子系统构成。,外输入控制信息状态信息输入数据输出数据无论数据处理器还是控制,4.2 数码管动态显示扫描电路原理及设计,4.2.1 数码管动态显示扫描电路原理,数码管显示器具有显示直观,亮度好,显示寿命长、控制电路简单等优点,因此,在数字系统中数码管显示器被广泛应用。根据数码管的结构,可分为共阳数码管和共阴数码管。为了驱动相应的数码管需要选择对应的七段译码器。就可以构成显示电路,但是这种电路需要为每一个数码管提供一个七段译码器,这种结构的电路称之为静态显示电路。其优点是显示电路具有结构简单,可以无限扩展的特
4、点。缺点是随着显示位数增加,所需要的七段译码器太多,并且所有的数码管都处于常亮的状态,显示亮度不可控制,这样既增加了显示电路的成本,也增加了显示器的功耗,也降低了显示器的使用寿命。,4.2 数码管动态显示扫描电路原理及设计4.2.1 数码管动,用一个七段译码器实现多位数码管显示电路的电路,该结构的电路通常称为动态显示电路。优点是节省了七段译码器的使用数量,这种显示电路是根据分时显示的原理设计的。在同一时间,仅有一位数码管处于显示状态,如果在人的视觉暂留时间内,每个数码管都被点亮至少一次,就可以看到全部数码管都同时点亮的效果。只要适当的调整扫描时钟频率,就可以实现这样的功能。缺点是增加了位译码器
5、、扫描计数器和数据选择器。在数码管的数量较多时,该电路要比静态显示电路节省许多硬件资源。,用一个七段译码器实现多位数码管显示电路的电路,该结构的电路通,设有n位数码管,人的视觉暂留时间约为20ms,则扫描时钟频率fs为,设有n位数码管,人的视觉暂留时间约为20ms,则扫描时钟频率,4.2.2 采用Verilog HDL描述的动态显示扫描电路,module top(clk, x0, x1, x2, x3, x4, x5, x6, x7, segment, y );input clk; /扫描时钟input 3:0 x0 ,x1, x2, x3, x4, x5, x6, x7;/显示数据outpu
6、t 6:0 segment; /数码管的段码output 7:0 y; /数码管的位码wire 2:0 temp;wire 3:0 muxout;counter u0( .clk(clk), .q(temp) ); /扫描计数器decoder138 u1( .a(temp0), .b(temp1), .c(temp2), .sel(y) ); /位码译码器mux32_4 u2(.x0(x0), .x1(x1), .x2(x2), .x3(x3),.x4(x4), .x5(x5), .x6(x6), .x7(x7), .sel(temp), .mux_out(muxout) ); /输入数据选择
7、器t7_seg u3( .hex(muxout), .segment(segment); /显示段译码器endmodule,4.2.2 采用Verilog HDL描述的动态显示扫描电路,顶层模块逻辑图,扫描计数器,位码译码器,输入数据选择器,显示段译码器,顶层模块逻辑图扫描计数器位码译码器输入数据选择器显示段译码器,module counter( input clk, inout 2:0 q );reg 2:0 qtemp;assign q=qtemp;always(posedge clk)qtemp=qtemp+3d1;endmodule,三位二进制计数器元件,module mux32_4
8、( input 3:0 x0, input 3:0 x1, input 3:0 x2, input 3:0 x3, input 3:0 x4,input 3:0 x5, input 3:0 x6, input 3:0 x7, input 2:0 sel, output 3:0 mux_out );reg 3:0 muxout;assign mux_out=muxout;always(sel,x0,x1,x2,x3,x4,x5,x6,x7)case(sel)3b000:muxout=x0;3b001:muxout=x1;3b010:muxout=x2;3b011:muxout=x3;3b100:
9、muxout=x4;3b101:muxout=x5;3b110:muxout=x6;3b111:muxout=x7;default: muxout=4d0;endcaseendmodule,32选4的数据选择器元件,module counter( input clk, ino,module decoder138( input a, input b, input c, output 7:0 sel );reg 7:0 seltemp;wire 2:0 d_in;assign sel=seltemp;assign d_in=c,b,a;always(d_in)case(d_in)3b000:sel
10、temp=8b00000010;3b010:seltemp=8b00000100;3b011:seltemp=8b00001000;3b100:seltemp=8b00010000;3b101:seltemp=8b00100000;3b110:seltemp=8b01000000;3b111:seltemp=8b10000000;default:seltemp=8b00000000;endcaseendmodule,3线-8线译码器元件,module decoder138( input a, in,module t7_seg( input 3:0 hex, output 6:0 segment
11、 );reg 6:0 segmenttemp;assign segment=segmenttemp;always(hex)case(hex)4b0001:segmenttemp=7b1111001;4b0010:segmenttemp=7b0100100;4b0011:segmenttemp=7b0110000;4b0100:segmenttemp=7b0011001;4b0101:segmenttemp=7b0010010;4b0110:segmenttemp=7b0000010;4b0111:segmenttemp=7b1111000;4b1000:segmenttemp=7b000000
12、0;4b1001:segmenttemp=7b0010000;default:segmenttemp=7b1000000;endcaseendmodule,七段显示译码器元件,module t7_seg( input 3:0 hex,4.3 乘法器的原理及设计,4.3.1乘法器工作原理,乘法器的一般计算过程,4.3 乘法器的原理及设计4.3.1乘法器工作原理乘法器的一,EDA数字系统设计课件第四章改,4.3.2 采用Verilog HDL描述的乘法器,其中乘数b被送到串行输出的移位寄存器,被乘数a与等宽的0被送到与积具有相同位宽的并行输出移位寄存器中。状态控制用于控制数据输出时间。,4.3.2
13、 采用Verilog HDL描述的乘法器其中乘数b,根据上面乘法器结构图,可以编写如下的4x4 乘法器的Verilog HDL程序,module multiplier(a, b, clk, load, p );input 3:0 a, b;input clk;input load;output 7:0 p; reg 7:0 at,pp;reg 3:0 bt;reg 1:0 state;reg 7:0 ptemp;assign p=ptemp;,时序乘法器,根据上面乘法器结构图,可以编写如下的4x4 乘法器的Veri,always(posedge clk)begin if(load=1b1) b
14、egin at=4b0000,a; bt=b; state=2b00; pp=8b00000000; end else begin state=state+2b1; if(bt0=1b1) pp=pp+at; bt=1b0,bt3:1; at=at6:0,1b0; endend,用并置方法对被乘数进行位扩展,状态计数清零,部分积清零,产生位积并累加,乘数左移,被乘数右移,always(state)begin if(state=2b00) ptemp=pp;endendmodule,always(posedge clk)用并置方法对被乘数进,目前,很多EDA综合系统均支持乘法器的行为描述方式,即
15、直接使用运算符“*”来完成。,module multicom (a, b, p );input 3:0 a;input 3:0 b;output7:0 p;assign p=a*b;endmodule,组合乘法器的描述方式,目前,很多EDA综合系统均支持乘法器的行为描述方式,即直接使,4.4 除法器的原理及设计方法,4.4.1 除法器的工作原理,4.4 除法器的原理及设计方法4.4.1 除法器的工作原理1,从前面的乘法器介绍可知4x4位乘法器的积是一个8位二进制数,因此,4位除法器应该是一个8位二进制数除以一个4位二进制数。采用的方法是依次从被除数的高位中减去除数,如果不够减,除数右移,直到够
16、减为止。当余数小于除数时则完成除法运算。从除法运算过程可以看出,其主要是移位相减的操作。,这里用左移被除数代替右移除数的操作,并把商直接存储到被除数的空余位中,省去了存储商的寄存器。因此被除数寄存器扩展为9位移位寄存器。,Sh是移位信号,在时钟上升沿控制被除数寄存器左移一位;Su是把减法器的结果装入被除数寄存器的X8 、X7 、X6 、X5 、X4和时钟的上升沿置商的最低位为“1”的控制信号,St是除法运算启动信号,Ov是除法器溢出标志信号。,从前面的乘法器介绍可知4x4位乘法器的积是一个8位二进制数,,EDA数字系统设计课件第四章改,除法器控制电路状态图,S0(停止),S1,S2,S5,S4
17、,S3,St/0,St/load,C/OV,C/Sh,C/Su,C/Sh,C/Su,C/Sh,C/Su,C/Sh,C/Su,C/0,当启动信号St=1时,启动除法器工作,产生Load信号,装载被除数寄存器和除数寄存器。如果C=1,除法溢出,除法器停止工作,溢出标志OV输出有效;如果C=0,将发生第一次移位操作,控制电路转到状态S2。然后,如果C=1,执行减法操作,减法操作完成后,C将保持为“0”,保证在下一次时钟有效时产生移位操作。这个过程将直到完成4次移位操作结束,控制状态转到S5。最后,如果C=1,执行最后一次减法运算,否则,不做减法运算。这时没有移位操作要求,控制电路回到停止状态S0。在
18、这里假设启动信号St为高有效,并且仅持续一个时钟周期,在完成全部操作前,启动信号St将一直保持为低电平。,除法器控制电路状态图S0S1S2S5S4S3St/0St/,4.4.2 用Verilog HDL描述的除法器,4.4.2 用Verilog HDL描述的除法器,参考程序,module divider(dividend_in, divisor, st, clk,quotient, remainder, overflow );input 7:0 dividend_in;input 3:0 divisor;input st;input clk;output 3:0 quotient;output
19、 3:0 remainder;output overflow;reg 2:0 state,nextstate;reg load,su,sh;wire c;wire 4:0 subout;reg 8:0dividend;reg overflowtemp;assign overflow=overflowtemp;assign subout=dividend8:4-1b0,divisor; assign c=subout4;assign remainder=dividend7:4; assign quotient=dividend3:0;,减法器,分离出余数,分离出商,参考程序module divi
20、der(dividend_in,always(state,st,c)beginload=1b0;overflowtemp=1b0;sh=1b0;su=1b0;case(state) 3d0:if(st=1b1) begin load=1b1;nextstate=3d1; end else nextstate=3d0; 3d1:if(c=1b1) begin overflowtemp=1b1; nextstate=3d0; end else begin sh=1b1; nextstate=3d2; end,3d2,3d3,3d4:if(c=1b1) beginsu=1b1;nextstate=s
21、tate; end else beginsh=1b1;nextstate=state+3d1; end3d5: beginif(c=1b1)su=1b1;nextstate=3d0; endendcaseend,启动除法运算,溢出判断,状态2、3、4:实现除法运算,结束运算过程,返回初始态,always(state,st,c)3d2,启动除法运算,always(posedge clk)beginstate=nextstate;if(load=1b1)dividend=1b0,dividend_in;if(su=1b1)begindividend8:4=subout;dividend0=1b1;
22、endif(sh=1b1)dividend=dividend7:0,1b0;endendmodule,always(posedge clk),4.5简易CPU工作原理及设计方法,4.5.1 简易CPU的工作原理,4个n位寄存器R0、R1、R2、R3,ALU算术逻辑单元,控制单元,4.5简易CPU工作原理及设计方法4.5.1 简易CPU的工,基本操作,Rx和Ry代表R0-R3的任意寄存器,Rx和Ry代表寄存器Rx和Ry中的内容Load操作是把数据总线输入的数据Data传输到内部寄存器Rx,Move操作完成把寄存器Ry的内容传输到寄存器Rx的操作。,Load操作和Move操作都是单周期指令,仅需一
23、个时钟周期(1个Clock)。加法和减法操作需要三个时钟周期。第一个时钟周期把寄存器Rx的内容传输到寄存器A,第二个时钟周期把寄存器Ry的内容传输到内部总线Bus上,然后ALU执行加法或减法操作,并把结果存储到寄存器G。第三个时钟周期把寄存器G的内容传输到寄存器Rx。,基本操作操作功能Load Rx,dataRxdataMo,状态控制电路,加法和减法所需的时钟周期最长,因此,设计控制电路至少需要有四个状态T0、T1、T2、T3,其中T0状态表示没有任何操作的状态,即初始状态。T1对应各种操作的第一步,T2、T3则分别对应加法和减法器的第二步和第三步。用4进制计数器实现4个状态转换控制,用2-4
24、译码器对这4个状态进行译码,产生相应的控制信号。,状态控制电路加法和减法所需的时钟周期最长,因此,设计控制电路,功能编码状态译码器,用6位二进制编码表示的不同操作。这些编码就是功能码,也被称为指令编码,最左边两位二进制数代码F(f1,f0)可以组成4组不同的代码,分别表示4种不同的操作。设f1f0=00,01,10,11分别表示Load,Move,Add,Sub四种操作。Rx1Rx0表示操作数Rx的编码,而Ry1Ry0表示操作数Ry的编码。当功能码输入信号FRin有效时,6位功能码被存储到一个6位功能寄存器中。,功能编码状态译码器用6位二进制编码表示的不同操作。这些编码就,4.5.2 采用Ve
25、rilog HDL描述的ALU,思路:首先需要设计4进制计数器作为状态控制器单元,2-4译码器电路作为状态译码单元,8位寄存器电路作为ALU内部寄存器单元,然后对这些基本单元进行元件例化,在ALU的主程序中引用。,参考程序,module upcount(clock, clear, q );input clock;input clear;inout 1:0 q;reg 1:0 qtemp;assign q=qtemp;always(posedge clock) beginif(clear=1b1)qtemp=2b00;elseqtemp=qtemp+2b01;endendmodule,4进制计数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字 系统 设计 课件 第四
链接地址:https://www.31ppt.com/p-1284378.html