东北大学EDA数字系统设计课件第四章改
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
seltemp<=8'b00000010; seltemp<=8'b00000100; seltemp<=8'b00001000; seltemp<=8'b00010000; seltemp<=8'b00100000; seltemp<=8'b01000000; seltemp<=8'b10000000; seltemp<=8'b00000000;
3线-8线译码器元件
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) 3'b000: 3'b010: 3'b011: 3'b100: 3'b101: 3'b110: 3'b111: default: endcase endmodule
七段显示译码器元件
module t7_seg( input [3:0] hex, output [6:0] segment ); reg [6:0] segmenttemp; assign segment=segmenttemp; always@(hex) case(hex) 4'b0001: 4'b0010: 4'b0011: 4'b0100: 4'b0101: 4'b0110: 4'b0111: 4'b1000: 4'b1001: default: endcase endmodule segmenttemp<=7'b1111001; segmenttemp<=7'b0100100; segmenttemp<=7'b0110000; segmenttemp<=7'b0011001; segmenttemp<=7'b0010010; segmenttemp<=7'b0000010; segmenttemp<=7'b1111000; segmenttemp<=7'b0000000; segmenttemp<=7'b0010000; segmenttemp<=7'b1000000;
顶层模块逻辑图
扫描计数器
CLK X0(3:0) X1(3:0) X2(3:0) X3(3:0) X4(3:0) X5(3:0) X6(3:0) X7(3:0) Clk Q(2:0) Sel(2:0) a X0(3:0) X1(3:0) X2(3:0) X3(3:0) X4(3:0) X5(3:0) X6(3:0) X7(3:0) Mux_out(3:0) Hex(3:0) SEG(6:0) SEG(6:0) b c Y(7:0) Y(7:0)
fs n 50 n( Hz ) 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;//显示数据 output [6:0] segment; //数码管的段码 output [7:0] y; //数码管的位码 wire [2:0] temp; wire [3:0] muxout; counter u0( .clk(clk), .q(temp) ); //扫描计数器
用一个七段译码器实现多位数码管显示电路的电路,该结构的电路通常 称为动态显示电路。优点是节省了七段译码器的使用数量,这种显示电路 是根据分时显示的原理设计的。在同一时间,仅有一位数码管处于显示状 态,如果在人的视觉暂留时间内,每个数码管都被点亮至少一次,就可以 看到全部数码管都同时点亮的效果。只要适当的调整扫描时钟频率,就可 以实现这样的功能。缺点是增加了位译码器、扫描计数器和数据选择器。 在数码管的数量较多时,该电路要比静态显示电路节省许多硬件资源。
4.2.1 数码管动态显示扫描电路原理
数码管显示器具有显示直观,亮度好,显示寿命长、控制电路简单等优点, 因此,在数字系统中数码管显示器被广泛应用。 根据数码管的结构,可分为共阳数码管和共阴数码管。 为了驱动相应的数码管需要选择对应的七段译码器。就可以构成显示电路, 但是这种电路需要为每一个数码管提供一个七段译码器,这种结构的电路称 之为静态显示电路。其优点是显示电路具有结构简单,可以无限扩展的特点 。缺点是随着显示位数增加,所需要的七段译码器太多,并且所有的数码管 都处于常亮的状态,显示亮度不可控制,这样既增加了显示电路的成本,也 增加了显示器的功耗,也降低了显示器的使用寿命。
位码译码器
显示段译码 器
输入数据选 择器
32选4的数据选择器元件
三位二进制计数器元件 module counter( input clk, inout [2:0] q ); reg [2:0] qtemp; assign q=qtemp; always@(posedge clk) qtemp<=qtemp+3'd1; endmodule module mux32_4 ( 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;
移位脉冲 4 MSB
0
4 被乘数
移 位 寄 存 器
& & &
LSB
4.3.2 采用Verilog HDL描述的乘法器
b clk load 4 ‘0’ a 4 4 移位 lsb 寄存 8 器 l/s 移位 寄存 器 l/s 8 位 积 8 输出 控制 clr en 8 p
状 态 控 制
其中乘数b被送到串行输出的移位寄存器,被乘数a与等宽的‘0’被送到与积具有相同位 宽的并行输出移位寄存器中。状态控制用于控制数据输出时间。
always@(posedge clk) begin 用并置方法对 if(load==1'b1) 被乘数进行位 扩展 begin at<={4‘b0000,a}; bt<=b; 状态计数清零 state<=2'b00; pp<=8'b00000000; 部分积清零 end else begin state=state+2'b1; if(bt[0]==1'b1) 产生位积并累加 pp<=pp+at; bt<={1'b0,bt[3:1]}; 乘数左移 at<={at[6:0],1'b0}; end 被乘数右移 end
控制信息
输入数据 数据 处理 器 输出数据
外输入
控制器 状态信息
无论数据处理器还是控制器都是根据其功能特点来划分的,归根结 底是由数字电路构成的。一个实际的数字系统可能简单也可能复杂
。如果一个数字系统没有控制器,通常称其为子系统,一个复杂数
字系统可能由多个子系统构成。
4.2 数码管动态显示扫描电路原理及设计
always@(state) begin if(state==2'b00) ptemp<=pp; end endmodule
目前,很多EDA综合系统均支持乘法器的行为描述方式,即直接使用运 算符“*”来完成。
module multicom (a, b, p ); input [3:0] a; input [3:0] b; 组合乘法器 output[7:0] p; 的描述方式 assign p<=a*b; endmodule
根据上面乘法器结构图,可以编写如下的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;
decoder138 u1( .a(temp[0]), .b(temp[1]), .c(temp[2]), .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) ); //输入数据选择器 t7_seg u3( .hex(muxout), .segment(segment) endmodule ); //显示段译码器
第4章 典型数字系统分析与设计
数字系统概述 数码管动态显示扫描电路原理及设计 乘法器的原理及设计 除法器的原理及设计方法 简易CPU工作原理及设计方法
交通信号灯控制器原理及设计
数字频率计的原理及设计 数字信号发生器的原理及设计
4.1 数字系统概述
采用数字电子技术实现数字信息处理、传输、控制的数字逻辑单元集 合称为数字系统。 数字系统一般包括数据处理器和控制器两个部分
Vcc
4 显示数据 4
7 七段译码器 4 7 七段译码器 4 7 七段译码器 4
数据 选择 器
4
段 译 码 器 位 译 码 器
8
扫描 扫描时钟 计数 器
4 显示数据 4 数据 选择 器 4
段 译 码 器 位 译 码 器
8
扫描 扫描时钟 计数 器
设有n位数码管,人的视觉暂留时间约为20ms,则扫 描时钟频率fs为
数据处理器由寄存器和组合电路组成。寄存器用于暂存信息。组合电路实现对 数据的加工和处理。在一个操作步骤,控制器发出命令信号给数据处理器,数 据处理器完成命令信号所规定的操作。在下一个操作步骤,控制器发出另外一 组命令信号,命令数据处理器完成相应的操作。通过多步操作(操作序列),数 字系统完成一个操作任务,控制器接收数据处理器的状态信息及外部输入来选 择下一个操作步骤。 控制器决定数据处理器的操作和操作序列。控制器决定操作步骤,可以记忆当前 步骤,也可以确定下一步骤,因此控制器中包含存储器,用来记忆操作步骤,及 时根据外部输入和数据处理器的状态信息来确定下一个操作步骤。
4.4 除法器的原理及设计方法
4.4.1 除法器的工作原理
除数→
1 0 0 0 1 1 0 0 1 0 0 1 1 135÷13 = 10 余 5
1 1 01
1 0 1 1 0 1 1 0 1 0 1
←商 ←被除数
1 1 0 1 0 0 0 1
←余数
从前面的乘法器介绍可知4x4位乘法器的积是一个8位二进制数,因此,4位 除法器应该是一个8位二进制数除以一个4位二进制数。采用的方法是依次从 被除数的高位中减去除数,如果不够减,除数右移,直到够减为止。当余数 小于除数时则完成除法运算。从除法运算过程可以看出,其主要是移位相减 的操作。
always@(sel,x0,x1,x2,x3,x4,x5,x6,x7) case(sel) 3'b000: muxout<=x0; 3'b001: muxout<=x1; 3'b010: muxout<=x2; 3'b011: muxout<=x3; 3'b100: muxout<=x4; 3'b101: muxout<=x5; 3'b110: muxout<=x6; 3'b111: muxout<=x7; default: muxout<=4'd0; endcase endmodule
4.3 乘法器的原理及设计
4.3.1乘法器工作原理
乘法器的一般计算过程
1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 ←被乘数 ←乘数 ←位积 ←位积 ←位积 ←位积 ←积
4 乘数
移 位 寄 存 器
LSB
& & & & & 8 位积 累加器 部分积 8 8