资源描述:
《时序逻辑电路ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、模拟与数字电路AnalogandDigitalCircuits17_时序逻辑电路(4)1主要内容数码管动态显示按键/开关去抖动数字系统结构时序二进制乘法器寄存器组2Nexys-3基本输入/输出开关/按键BTN按下为1SW拨到上为1LED指示灯LD=1时点亮7段数码管AN=0使能相应数位CA~CG:字形码,0显示相应段(共阳极)3Nexys-2基本输入/输出开关/按键BTN按下为1SW拨到上为1LED指示灯LD=1时点亮7段数码管AN=0使能相应数位CA~CG:字形码,0显示相应段(共阳极)4数码管动态显示4位7段数码显示接口8DG08DG18D
2、G28DG3ClkAN0AN1AN28AN3DGAN0AN1AN2AN3DG分频器脉冲分配器8DG08DG18DG28DG3Clk8DG4AN多路选择器Clk_low445按键/开关去抖动00012012300000000010012300000ClkInOlOpCnt输入整形电路InClkOlOp若In≠Ol,则Cnt计数,否则清零若Cnt=N,则Ol=in,Cnt=0若Cnt=N且In=1,则Op=1若Op=1,则Op=0抖动持续时间一般在5~10ms6数字系统结构数字系统由若干逻辑功能部件构成,按一定顺序处理数字信号的电路从结构上划分为数
3、据通路和控制单元两部分数据通路(DataPath)数据在被处理过程中经过的路径控制单元(ControlUnit)控制数据通路中数据的流动方向和次序数据通路数据输入数据输出控制单元控制输入控制状态数字系统结构框图状态输出7示例1—时序二进制乘法器X,Y:输入数据,被乘数和乘数,4位无符号二进制数Z:输出数据,8位积Start:控制输入,启动乘法运算,高电平有效Reset:控制输入,复位,高电平有效Done:状态输出,运算结束指示,高电平有效Clk:时钟输入StartReset4位乘法器4Y4X8ZDoneClk8乘法运算过程X2X3X0X1Y2Y
4、3Y0Y1×????????????????Z2Z3Z0Z1Z6Z7Z4Z5+(当Yi=1)????=X3X2X1X0(当Yi=0)0000DBAB手工运算过程+00000Y3Y2Y1Y0????0???Z00???Z0Y3Y2Y1+????????Z1????Z1Z0Y3Y2+????????Z2????Z2Z1Z0Y3+????Z7Z6Z5Z4Z3Z3Z2Z1Z0Z7Z6Z5Z4C=0,A=0,D=X,B=Y{C,A}=A+D*Y0{A,B}={C,A,B}>>1BA操作说明C{C,A}=A+D*Y1{A,B}={C,A,B}>>1{C,A
5、}=A+D*Y2{A,B}={C,A,B}>>1{C,A}=A+D*Y3{A,B}={C,A,B}>>1迭代运算过程Z=X×Y9乘法器结构Clk数据通路控制单元Start4Y4XDone8ZInit,Add,Cnt,ShiftE,B0ResetStartReset4位乘法器4Y4X8ZDoneClk10乘法器结构(续)数据通路Init:DX,BY,T0,A0,C0Cnt:TT-1Add:{C,A}A+DShr:{C,A,B}{C,A,B}>>1,C0StartResetClk控制单元InitAddEB[0]CntShrDone
6、2被乘数加法器乘数部分积进位444BACD444XY4Z计数器T检测0E011乘法器控制单元状态图S0DoneStart/InitResetS1CntS2ShrB[0]/Add!B[0]!StartE!EStartResetClk控制单元InitAddEB[0]CntShrDoneInit:DX,BY,T0,A0,C0Cnt:TT-1Add:{C,A}A+DShr:{C,A,B}{C,A,B}>>1,C012乘法器控制单元(续1)状态表ResetStartB[0]ESnSn+1DoneInitAddShrCnt1xxxxS00
7、000100xxS000001S001xxS110001S00X0x000100X1xS201010S1S2S10Xx0001000Xx1S000100S2S1S2Done=S0Init=Start·S0Add=B[0]·S1Shr=S2Cnt=S113乘法器时序图clkStartS0InitStateCntAddShrS1S2S1S2S1S2?D?B?A?T11111011000000CDone111001110101101111011101101011E??14Verilog描述二进制乘法器modulebinary_multiplier(x
8、,y,z,start,done,reset,clk);output[7:0]z;outputdone;input[3:0]x,y;inputstart