- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
组合逻辑电路描述
reg [1:0] Sel; reg [7:0] A, B,C,D; reg [7:0] Y1, Y2, ; …… always @( Sel or A or B or C or D ) begin Y1、Y2在有些分支中 、 在有些分支中 …… 没有明确的赋值, 没有明确的赋值,导致出现 case(Sel) 2’b00: Y1 = A; 不必要的Latch 不必要的 2’b01: Y 2= B; 2’b10: Y1 = C; 2’b11: Y 2= D; default: Y1 = ~(A&B) ; endcase …… end ……
assign赋值语句中,被赋值的变量/信号一定为wire类型。
对复杂的组合逻辑结构,用always (敏感表) Stm形式加以描述
组逻辑电路描述
描述结构: Data Path Control Path 具体电路形式: Multiplexers Encoder / priority encoder Decoder Comparator Alu Logic /arithmetic operations
Outputs
Y2 Y1 Y0 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1
组合逻辑电路描述
reg [7:0] A; reg [2:0]Y; …….. always @(A) begin if (A==8’b00000001) Y=3’b000; else if (A==8’b00000010) Y=3’b001; else if (A==8’b00000100) Y=3’b010; else if (A==8’b00001000) Y=3’b011; else if (A==8’b00010000) Y=3’b100; else if (A==8’b00100000) Y=3’b101; else if (A==8’b01000000) Y=3’b110; else if (A==8’b10000000) Y=3’b111; else Y=3’bxxx; end reg [7:0] A; reg [2:0]Y; …….. always @(A) casex(A) 8’b00000001: 8’b00000010: 8’b00000100: 8’b00001000: 8’b00010000: 8’b00100000: 8’b01000000: 8’b10000000: default: endcase
1 , X , Z }中的一个, 中的一个, 中的一个
外层的case语句是满的, 但内层的case语句不满, 产生Latch以保持Y1
组合逻辑电路描述
module examp1(A1, B1, C1, A2, B2, C2, D2, Y1, Y2); input [8:0] A1, B1, C1, A2, B2, C2, D2; output [10:0] Y1, Y2; reg [10:0] Y1, Y2; always @(A1 or A2 or B1 or B2 or C1 or C2 or D1 or D2) begin Y1 <= A1 + B1 + C1 + D1 ; Y2 <= ( A2 + B2 ) + ( C2 + D2 ) ; end A2 endmodule + A1 B2 B1 C1 D1
组合逻辑电路描述
多路选择开关 二选一开关建议用if…else…结构描述; 三/四选一开关可用if…else…结构、 case/casex/casez结构描述 多选一开关建议不采用if…else…结构描 述 HDL描述中,注意if…else…及其结构嵌套 结构、case/casex/casez结构的完整性。
组合逻辑电路描述
reg [1:0] Sel1, Sel2; reg [7:0] A, B,C,D; reg [7:0] Y1; …… always @( Sel1or Sel2 or A or B or C or D ) begin …… case(Sel1) 每一个二进制数的取值为{ 每一个二进制数的取值为 0, 2’b00: Y1 = A + 1; 即有四种可能的取值 2’b01: Y 1= A + B; 2’b10: Y1 = !C ; 2’b11: case (Sel2) 2’b00: Y1 = D - A; 2’b01: Y1 = A & B; 2’b10: Y1 = A | B; 2’b11: Y1 = ! D; endcase default: Y1 = ~(A&B) ; endcase …… end ……
组合逻辑电路描述
编码/解码电路
将一组形式的二进制数据转化为另一种形式的二进制数据
形式上,编码 解码电路可采用 解码电路可采用: 形式上,编码/解码电路可采用:
if …else 及其嵌套结构 及其嵌套结构; case/casex/casez描述结构; 描述结构; 描述结构 for 循环结构(一般避免采用) 循环结构(一般避免采用)
+
+ +
+
Y1 C2 D2
Y2
+
组合逻辑电路描述
…….. reg [7:0] A, B, C, D, E, F, G, H; reg [8:0] Sum; reg [1:0] sel; ………. always (sel or A or B or C or D or E or F or G or H) A begin Sum=9’b0; B case (Sel) 2’b00: Sum = A +B; C 2’b01: Sum = C + D; D 2’b10: Sum = E + F; E 2’b11: Sum = G + H; F endcase G end H ………..
Sum +
组合逻辑电路描述
描述方式 对简单的电路结构,可用连续赋值语句加以描 述;
reg [7:0] a,b; wire [7:0] c; assign c= a&b; reg a, b, cin; wire sum, cout; assign {sum,cout}= {a^b^c, (a&b)|(a&c)|(b&c)};
组合逻辑电路描述
reg [1:0] Sel; reg [7:0] A, B,C,D; reg [7:0] Y; …… always @( Sel or A or B or C or D ) begin …… case(Sel) 2’b00: Y = A; 分支不满 2’b01: Y = B; 出现Latch 2’b10: Y = C; 2’b11: Y = D; endcase …… end …… reg [1:0] Sel; reg [7:0] A, B,C,D; reg [7:0] Y; …… always @( Sel or A or B or C or D ) begin …… case(Sel) 2’b00: Y = A; 2’b01: Y = B; 2’b10: Y = C; 2’b11: Y = D; default: ; endcase …… 分支虽满,但属于值保持, end 出现Latch ……
设计描述
从16位乘法器的设计谈起
组合逻辑电路 描述
组合逻辑电路描述
同步时序逻辑电路的时钟频率直接取决于组合通 路(包括数据通路、控制通路)的延迟时间; 在深亚微米工艺条件下,组合逻辑通路的延迟时 间与组合逻辑通路的延迟级数(即逻辑级数)密 切相关; 降低组合逻辑通路的逻辑级数成为组合通路设计 优化的关键因素; 组合逻辑电路的功耗及其所占用的芯片面积直接 与电路中的单元数目、逻辑连线数目相关; 减少组合逻辑电路实现所需的单元及连线数目成 为组合逻辑电路设计优化的重要因素。
组合逻辑电路描述
inputs
A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
Y=3’b000; Y=3’b001; Y=3’b010; Y=3’b011; Y=3’b100; Y=3’b101; Y=3’b110; Y=3’b111; Y=3’bxxx;
组合逻辑电路描述
有时也可用for 循环结构描述编码/解码逻辑电路, 但一般不建议采用(综合结果很差)
reg [7:0] A, B; reg [2:0] I, Y; …… for (I=0; I<=7;I=I+1) begin B=A; B[I] = 1’b0; if (A[I]==1’b1 && B==8’b0) Y=I; else Y=3’bxxx; end ……
逻辑模拟结果正确
综合结果差!!!
组合逻辑电路描述
inputs
A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 x 0 0 0 0 0 0 1 x x 0 0 0 0 0 1 x x x 0 0 0 0 1 x x x x 0 0 0 1 x x x x x 0 0 1 x x x x x x 0 1 x x x x x x x
什么情况下会引入Latch? 条件或分支语句中,对信号赋值说明不完全、 条件或分支语句中,对信号赋值说明不完全、 且信号在条件或分支语句前没有初始赋值。 且信号在条件或分支语句前没有初始赋值。
组合逻辑电路描述
…… reg A1,A2,B1,B2; reg En1,En2; reg Y1,Y2,M; …… always @( En1 or En2 or A1 or A2 or B1 or B2) begin En1=0时,Y1取值情形 if (En1) Y1 = A1; 没有说明,产生Lacth if (En2) begin Y2 = !((A2 & B2) | B1) ; M = Y2 | Y1; En2=0时,Y2、M的取值情形 end 没有说明,产生Lacth以保持M、Y2 end 的取值 ……