资源描述
模拟与数字电路 Analog and Digital Circuits,17_时序逻辑电路(4),1,主要内容,数码管动态显示 按键/开关去抖动 数字系统结构 时序二进制乘法器 寄存器组,2,Nexys-3基本输入/输出,开关/按键 BTN按下为1 SW拨到上为1 LED指示灯 LD=1时点亮 7段数码管 AN=0使能相应数位 CACG:字形码,0显示相应段(共阳极),3,Nexys-2基本输入/输出,开关/按键 BTN按下为1 SW拨到上为1 LED指示灯 LD=1时点亮 7段数码管 AN=0使能相应数位 CACG:字形码,0显示相应段(共阳极),4,数码管动态显示,4位7段 数码 显示 接口,8,DG0,8,DG1,8,DG2,8,DG3,Clk,AN0,AN1,AN2,8,AN3,DG,5,按键/开关去抖动,输入 整形 电路,In,Clk,Ol,Op,若InOl,则Cnt计数,否则清零 若Cnt=N,则Ol=in,Cnt=0 若Cnt=N且In=1,则Op=1 若Op=1,则Op=0,抖动持续时间一般在510ms,6,数字系统结构,数字系统 由若干逻辑功能部件构成,按一定顺序处理数字信号的电路 从结构上划分为数据通路和控制单元两部分 数据通路(Data Path) 数据在被处理过程中经过的路径 控制单元 (Control Unit) 控制数据通路中数据的流动方向和次序,7,示例1 时序二进制乘法器,X,Y:输入数据,被乘数和乘数,4位无符号二进制数 Z:输出数据,8位积 Start:控制输入,启动乘法运算,高电平有效 Reset:控制输入,复位,高电平有效 Done:状态输出,运算结束指示,高电平有效 Clk:时钟输入,Start,Reset,4位乘法器,4,Y,4,X,8,Z,Done,Clk,8,乘法运算过程,X2,X3,X0,X1,Y2,Y3,Y0,Y1,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,Z2,Z3,Z0,Z1,Z6,Z7,Z4,Z5,+,(当Yi =1),? ? ? ? =,X3X2X1X0,(当Yi =0),0 0 0 0,手工运算过程,Z = X Y,9,乘法器结构,10,乘法器结构(续),11,乘法器控制单元,状态图,Start,Reset,Clk,控制单元,Init,Add,E,B0,Cnt,Shr,Done,Init: DX, BY, T0 , A0, C0,Cnt: TT-1,Add: C, AA+D,Shr: C, A, BC, A, B1 , C0,12,乘法器控制单元(续1),状态表,Reset,Start,B0,E,Sn,Sn+1,Done,Init,Add,Shr,Cnt,1,x,x,x,x,S0,0,0,0,0,1,0,0,x,x,S0,0,0,0,0,1,S0,0,1,x,x,S1,1,0,0,0,1,S0,0,X,0,x,0,0,0,1,0,0,X,1,x,S2,0,1,0,1,0,S1,S2,S1,0,X,x,0,0,0,1,0,0,0,X,x,1,S0,0,0,1,0,0,S2,S1,S2,13,乘法器时序图,clk,Start,S0,Init,State,Cnt,Add,Shr,S1,S2,S1,S2,S1,S2,?,D,?,B,?,A,?,T,1111,1011,00,0000,C,Done,11,10,01,1101,0110,1111,0111,0110,1011,E,?,?,14,Verilog描述二进制乘法器,module binary_multiplier (x, y, z, start, done, reset, clk); output 7:0 z; output done; input 3:0 x, y; input start, reset, clk; reg 3:0 a, b, d; reg c; reg 1:0 state, next_state, t; parameter S0=2b00, S1=2b01, S2=2b10; wire e; assign e = |t; assign z = a, b;,15,Verilog描述二进制乘法器(续1),/state register always (posedge clk or posedge reset) begin if (reset) state = S0; else state = next_state; end assign done = (state = S0); /next state function always (start or e or state) begin case (state) S0: if(start) next_state = S1; else next_state = S0; S1: next_state = S2;,16,Verilog描述二进制乘法器(续2),S2: if (!e) next_state = S1; else next_state = S0; default next_state = S0; endcase end /datapath function always (posedge clk) begin case (state) S0: if (start) begin d = x; b = y; a = 4d0; c = 1b0; t = 2b0; end,17,Verilog描述二进制乘法器(续3),S1: begin t = t - 2b01; if (b0) c, a = a + d; end S2: begin a = c, a3:1; b = a0, b3:1; c = 1b0; end endcase end endmodule,18,乘法器仿真波形,19,寄存器之间传输数据 每个寄存器的数据输入处配置多路数据选择器(MUX) 每个寄存器的输出数据连接到所有MUX 灵活实现多个数据同时传送,寄存器传送,L0,L1,L2,R0,Ld,R1,Ld,R2,Ld,; S0=1, L0=1 ; S1=0, L1=1,20,BUS,多个部件共享用于传输数据的导线 每次只能传送一个数据,总线,R0 R1,; S=1, L0=1,L0,n,R0,Ld,S,MUX,S,0,1,2,n,n,L1,n,R1,Ld,n,L2,n,R2,Ld,n,2,R0 R1,; E1=1, L0=1,; E0=0, E2=0,21,寄存器组,也称寄存器堆,或者寄存器文件(Register File) 例如,有3个读写端口的2m个n位寄存器,其中 D端口供写 DA:寄存器地址 D:写入数据 WE:写使能 A、B端口供读 AA、BA:寄存器地址 A、B:读出数据,22,M U X,0 1 2 3,R0,D,E,R1,D,E,R2,D,E,R3,D,E,M U X,0 1 2 3,Decoder,0 1 2 3,E,A,A,B,D,DA,AA,BA,WE,2,n,2,2,n,n,n,n,n,n,寄存器组的MUX实现,3端口4n寄存器组,23,寄存器组的三态门实现,3端口432寄存器组,24,ALU,算术逻辑单元(Arithmetic Logic Unit) 设计8位ALU,ALU功能表,25,示例数据通路,寄存器组 8个8位寄存器,记为R0R7 ALU为前例 MEM为存储器 DI/DO: 输入/输出数据 MA: 地址 MW: 写使能,Register File,A,B,D,DA,AA,BA,WE,8,8,8,3,3,0 1 MUX,8,0 1 MUX,8,MEM,DI,DO,MW,MA,8,8,4,V,C,N,Z,S,3,4,K,MB,MD,R0 R1-R2,; AA=1, BA=2, MB=1,X,Y,H,F,ALU,; S=5, MD=0,; DA=0, WE=1,26,The End,27,
展开阅读全文