Академический Документы
Профессиональный Документы
Культура Документы
Verilog structural & dataflow review Verilog behavior model 4-bit comparator Simple Security System
reviewstructural model
module FA_4bit(a,b,cin,sum,cout); input [3:0] a,b; input cin; output [3:0] sum; output cout; wire [2:0] c;
FA_1bit fa3( .a(a[3]), .b(b[3]), .cin(c[2]), .s(sum[3]), .cout(cout) ); FA_1bit fa2( .a(a[2]), .b(b[2]), .cin(c[1]), .s(sum[2]), .cout(c[2]) ); FA_1bit fa1( .a(a[1]), .b(b[1]), .cin(c[0]), .s(sum[1]), .cout(c[1]) ); FA_1bit fa0( .a(a[0]), .b(b[0]), .cin(cin), .s(sum[0]), .cout(c[0]) );
endmodule
reviewdataflow model
assign output = using opeartor data representation 4b0010 8hF1 10d1023 8dz {1,2}
behavior model
C For example
module mux_4to1(Dout, D0,D1,D2,D3,select); input [7:0] D0,D1,D2,D3; input [1:0] select; output [7:0] Dout; assign Dout = (select==2b00) ? D0 : (select==2b01) ? D1 : (select==2b10) ? D2 : (select==2b11) ? D3 : 8dz; endmodule module mux_4to1(Dout, D0,D1,D2,D3,select); input [7:0] D0,D1,D2,D3; input [1:0] select; output [7:0] Dout; reg [7:0] Dout; always@(*) begin case(select) 2b00: Dout=D0; 2b01: Dout=D1; 2b10: Dout=D2; 2b11: Dout=D3; endcase end endmodule
behavior model
For exampleif-else
module mux_4to1(Dout, D0,D1,D2,D3,select); input [7:0] D0,D1,D2,D3; input [1:0] select; output [7:0] Dout; reg [7:0] Dout; always@(*) begin if(select==2b00) Dout=D0; else if(select==2b01) Dout=D1; else if(select==2b10) Dout=D2; else Dout=D3; end endmodule
Comparators
Combinational Design
Equality Comparator
XNOR X Y X 0 0 1 1 Y 0 1 0 1 Z 1 0 0 1
Z = !(X $ Y)
A[3..0] B[3..0]
Equality Detector
A_EQ_B
A[3..0] B[3..0]
Magnitude Detector
Magnitude Comparator
A0 B0 A1 B1 A2 B2 A3 B3 C3 C2 C1 A_EQ_B C0
28 = 256!
Magnitude Comparator
A0 B0 A1 B1 A2 B2 A3 B3 C3 C2 C1 A_EQ_B C0
Find A_GT_B
Magnitude Comparator
A0 B0 A1 B1 A2 B2 A3 B3 C3 C2 C1 A_EQ_B C0
Because A3 = B3 and A2 > B2 i.e. C3 = 1 and A2 & !B2 = 1 Therefore, the next term in the logic equation for A_GT_B is C3 & A2 & !B2
Magnitude Comparator
A0 B0 A1 B1 A2 B2 A3 B3 C3 C2 C1 A_EQ_B C0
A_GT_B = A3 & !B3 + C3 & A2 & !B2 + .. Because A3 = B3 and A2 = B2 and A1 > B1 i.e. C3 = 1 and C2 = 1 and A1 & !B1 = 1
Therefore, the next term in the logic equation for A_GT_B is C3 & C2 & A1 & !B1
Magnitude Comparator
A0 B0 A1 B1 A2 B2 A3 B3 C3 C2 C1 A_EQ_B C0
A_GT_B = A3 & !B3 + C3 & A2 & !B2 + C3 & C2 & A1 & !B1 + .. Because A3 = B3 and A2 = B2 and A1 = B1 and A0 > B0 i.e. C3 = 1 and C2 = 1 and C1 = 1 and A0 & !B0 = 1 Therefore, the last term in the logic equation for A_GT_B is C3 & C2 & C1 & A0 & !B0
Magnitude Comparator
A0 B0 A1 B1 A2 B2 A3 B3 C3 C2 C1 A_EQ_B C0
A_GT_B = A3 & !B3 + C3 & A2 & !B2 + C3 & C2 & A1 & !B1 + C3 & C2 & C1 & A0 & !B0
Magnitude Comparator
A0 B0 A1 B1 A2 B2 A3 B3 C3 C2 C1 A_EQ_B C0
Find A_LT_B
A_LT_B = !A3 & B3 + C3 & !A2 & B2 + C3 & C2 & !A1 & B1 + C3 & C2 & C1 & !A0 & B0
1 -bit comparator
Gin Lin
The variable Eout is 1 if A = B and Gin = 0 and Lin = 0. The variable Gout is 1 if A > B or if A = B and Gin = 1. The variable Lout is 1 if A < B or if A = B and Lin = 1.
gt = 1
eq = 1 lt = 1