Design of Arithmetic circuits
|
|
- Maximillian Williamson
- 5 years ago
- Views:
Transcription
1 Design of Arithmetic circuits ic principle of pipelining ditional approach Input Data clk Process < 100 ns Through 10 MH elining approach Throughput considerably. increases
2 Chip area also increases. Latency comes into effect. put ta Proc. 1 <10 ns Reg. 1 Proc. 10 <10 ns Reg. 10 Throug 100 M clk clk cessing order e(ns) Input Reg. 1 Reg. 2 Reg Data1 0 Data2 Proc.1_1
3 20 Data3 Proc.1_2 roc.2_1 0 Data11 Proc.1_10 Proc.2_9... c.10_1 ency: 100 ns. titioning of a design Partition of data width Partition of functionality Partition of data width
4 Consider the example of a signed adder: Eight signed input numbers, each of width 12 bits. Sum of these numbers are required. Conventional approach of addition/subtraction uses all the 12 bits together. Since full adders are used for implementation, the result is delayed owing to the propagation of carry rippling through all the 12 bits.
5 Even the usage of carry look ahead circuit does not help in speeding up the computation since a large number of gates and inputs are required in this case. The answer for this problem is to divide the data widths into smaller chunks, and introduce pipelining. In the data width partitioning approach, all sub blocks do the same function. rtition of functionality In this method, the functional block is
6 divided into smaller sub blocks. In this type of partitioning, each sub block does a different function, in general. In the signed adder example to be presented, LSBs (7 bits) of the eight numbers are added concurrently followed by the addition of MSBs (5 bits along with carry from LSB addition) in subsequent pipeline stages.
7 ADDER CAN BE REALIZED IN TWO DIFFERENT WAYS: Feeding inputs serially Feeding inputs concurrently SERIAL SIGNED ADDER DESIGN sum [14:0] + s n [11:0] ( n0 n7 ) enable - clk s // Pipelined Serial Signed Adder Design - Verilog Code
8 //Adds eight numbers of 12 bit, 2's complement // nos. Feed inputs serially at 'n'. // Eight pipelining posedge of clk. // Result, sum, is 15 bits wide, in 2's complement // (registered output). module serial_adder12s ( clk, enable, n, sum, sum_valid, result ) ; input clk ; input enable ; input [11:0] n ; output [14:0] sum ; output sum_valid ;
9 output [14:0] result ; // Extend the result till it is overwritten by the new result. wire [14:0] sum_next ; wire [2:0] cnt_next ; wire sum_val ; reg [14:0] sum; reg [2:0] cnt ; reg sum_valid ; reg [14:0] result ; assign sum_next[14:0] = enable? ({{3{n[11]}},n[11:0]}+sum[14:0]) : 0 ; // Sign extend & accumulate.
10 assign cnt_next[2:0] = enable? (cnt+1) : 0 ; // Sign extend & pre-advance the counter. assign sum_val = (cnt==7)? 1 : 0 ; // Pre-determine the validity of the sum. (posedge clk) // Pipeline - Register the sum. begin sum[14:0] <= sum_next[14:0] ; // Register the sum. cnt[2:0] <= cnt_next[2:0] ; // Advance the count.
11 sum_valid <= sum_val ; // Register the signal. end (posedge clk) // Extend the result till it is overwritten by the new result. begin result[14:0] = sum_valid? sum[14:0] : result[14:0] ; // Register the sum. end
12 endmodule // Test Bench for Serial Adder Design `define clkperiodby2 10 `include "serial_adder12s.v" module serial_adder12s_test ( sum, sum_valid, result ); output [14:0] sum;
13 output sum_valid ; output [14:0] result; reg clk ; reg enable ; reg [11:0] n ; serial_adder12s u1( initial begin.clk(clk),.enable(enable),.n(n),.sum(sum),.sum_valid(sum_valid),.result(result) );
14 clk = 1'b0 ; // Apply first set of inputs sequentially every 20 ns. n = 12'h0 ; // 0 ns. enable = 0 ; #20 enable = 1 ; #17 n = 12'hfff ; // 37 ns. #20 n = 12'h7ff ; // 57 ns, etc. #20 n = 12'h800 ; #20 n = 12'h001 ; #20 n = 12'h001 ; #20 n = 12'h7ff ; #20 n = 12'haaa ; // 157 ns. #20 n = 12'h0 ; enable = 0 ; // Disable before applying // the next set of inputs
15 accumulated // so that the // sum is cleared. #20 enable = 1 ; // Apply the next set of inputs. n =100 ; // n0 #20 n = 200 ; #20 n = 300 ; #20 n = 400 ; #20 n = 500 ; #20 n = 100 ; #20 n = 200 ; #20 n = 247 ; // n7 #20 enable = 0 ; #100 $stop ; end
16 always #`clkperiodby2 clk <= ~clk ; // Run the clock at 50 MHz. endmodule Simulation results of serial signed adder
17
18 Synplify results Max. frequency of operation: 138 MHz. Mapping to part: xcv600ehq240-8 Cell usage:
19 MUXCY_L XORCY FDR FDE GND 14 uses 14 uses 19 uses 15 uses 1 use I/O primitives: IBUF OBUF BUFGP 13 uses 31 uses 1 use I/O Register bits: 15 Register bits not including I/Os: 19 (0%) Global Clock Buffers: 1 of 4 (25%) Mapping Summary: Total LUTs: 18 (0%) Mapper successful!
20 Xilinx P&R Results Design Summary: Number of errors: 0 Number of warnings: 0 Number of Slices: 11 out of 6,912 1% Number of Slices containing unrelated logic: 0 out of 11 0% Number of Slice Flip Flops: 19 out of 13,824 1% Number of 4 input LUTs: 18 out of 13,824 1% Number of bonded IOBs: 44 out of % IOB Flip Flops: 15 Number of GCLKs: 1 out of 4 25% Number of GCLKIOBs: 1 out of 4 25% Total equivalent gate count for design: 464 Additional JTAG gate count for IOBs: 2,160
21 Mapping completed. Maximum frequency: MHz PARALLEL SIGNED ADDER DESIGN n0 [11:0] n1 [11:0] n2 [11:0] n3 [11:0] n4 [11:0] adder12s n5 [11:0] n6 [11:0]
22 Complement evaluation (shortcut) [8]...[0] p Data Retain first 1 followed by 0s Invert other bits Sign can be extended by any number of bits without affecting the actual value.
23 Sign extend means duplicate MSB ([8]=[7]). [8]...[0] Extend Sign Ignore Carry.
24 Without the sign extension, the MSB [7] will be mistaken as a negative number for high positive values such as design partition Pipelined
25 n0 [11:0] n1 [11:0] n2 [11:0] n3 [11:0] n4 [11:0] n5 [11:0] n6 [11:0] n7 [11:0] Regist Register Result clk clk LSB MSB First stage clk clk LSB MSB Register Result Second stage T
26 ********** Verilog code for signed adder // Adds eight 12 bit, 2's complement nos., // n0 to n7. // Five pipeline stages posedge // clk. // Result, sum, is in 12 bit, 2's complement // (not registered). module adder12s( clk, n0,n1,n2,n3,n4,n5,n6,n7, sum ) ;
27 input clk ; input [11:0] n0, n1, n2, n3, n4, n5, n6, n7; output [14:0] sum ; wire [7:0] s00_lsb ; wire [7:0] s01_lsb ; wire [7:0] s02_lsb ; wire [7:0] s03_lsb ; wire [5:0] s00_msb ; wire [5:0] s01_msb ; wire [5:0] s02_msb ; wire [5:0] s03_msb ; wire [7:0] s10_lsb ; wire [7:0] s11_lsb ; wire [6:0] s10_msb ; wire [6:0] s11_msb ;
28 wire [7:0] s20_lsb ; reg [11:7] n0_reg1 ; reg [11:7] n1_reg1 ; reg [11:7] n2_reg1 ; reg [11:7] n3_reg1 ; reg [11:7] n4_reg1 ; reg [11:7] n5_reg1 ; reg [11:7] n6_reg1 ; reg [11:7] n7_reg1 ; reg [7:0] s00_lsbreg1 ; reg [7:0] s01_lsbreg1 ; reg [7:0] s02_lsbreg1 ; reg [7:0] s03_lsbreg1 ; reg [5:0] s00_msbreg2 ; reg [5:0] s01_msbreg2 ; reg [5:0] s02_msbreg2 ; reg [5:0] s03_msbreg2 ; reg [6:0] s00_lsbreg2 ;
29 reg [6:0] s01_lsbreg2 ; reg [6:0] s02_lsbreg2 ; reg [6:0] s03_lsbreg2 ; reg [7:0] s10_lsbreg3 ; reg [7:0] s11_lsbreg3 ; reg [5:0] s00_msbreg3 ; reg [5:0] s01_msbreg3 ; reg [5:0] s02_msbreg3 ; reg [5:0] s03_msbreg3 ; reg [6:0] s10_lsbreg4 ; reg [6:0] s11_lsbreg4 ; reg [6:0] s10_msbreg4 ; reg [6:0] s11_msbreg4 ; reg [6:0] s10_msbreg5 ; reg [6:0] s11_msbreg5 ; reg s20_lsbreg5cy ; reg [6:0] s20_lsbreg5 ;
30 // First stage addition assign s00_lsb[7:0] = n0[6:0]+n1[6:0] ; // Add lsb first - s00_lsb[7] is the carry assign s01_lsb[7:0] = n2[6:0]+n3[6:0] ; // n0-n7 lsb need not be registered since // addition is already carried out here. assign s02_lsb[7:0] = n4[6:0]+n5[6:0] ; assign s03_lsb[7:0] = n6[6:0]+n7[6:0] ;
31 (posedge clk) // Pipeline 1: clk (1). Register msb to // continue addition of msb. begin n0_reg1[11:7] <= n0[11:7] ; // Preserve all inputs for msb addition // during the clk(2). n1_reg1[11:7] <= n1[11:7] ; n2_reg1[11:7] <= n2[11:7] ; n3_reg1[11:7] <= n3[11:7] ; n4_reg1[11:7] <= n4[11:7] ;
32 n5_reg1[11:7] <= n5[11:7] ; n6_reg1[11:7] <= n6[11:7] ; n7_reg1[11:7] <= n7[11:7] ; s00_lsbreg1[7:0] <= s00_lsb[7:0] ; addition. // Preserve all lsb sum. // s00_lsbreg1[7] is the // registered carry // from lsb s01_lsbreg1[7:0] <= s01_lsb[7:0] ;
33 s02_lsbreg1[7:0] <= s02_lsb[7:0] ; s03_lsbreg1[7:0] <= s03_lsb[7:0] ; end // Sign extended & msb added with carry. assign s00_msb[5:0] = {n0_reg1[11], n0_reg1[11:7]}+ {n1_reg1[11], n1_reg1[11:7]}+s00_lsbreg1[7]; // s00_msb[6] is ignored.
34 assign s01_msb[5:0] = {n2_reg1[11], n2_reg1[11:7]}+ {n3_reg1[11], n3_reg1[11:7]}+s01_lsbreg1[7]; assign s02_msb[5:0] = {n4_reg1[11], n4_reg1[11:7]}+ {n5_reg1[11], n5_reg1[11:7]}+s02_lsbreg1[7]; assign s03_msb[5:0] = {n6_reg1[11], n6_reg1[11:7]}+
35 {n7_reg1[11], n7_reg1[11:7]}+s03_lsbreg1[7]; (posedge clk) // Pipeline 2: clk (2). Register msb to // continue addition of msb. begin s00_msbreg2[5:0] <= s00_msb[5:0] ; Preserve all msb sum. // s01_msbreg2[5:0] <= s01_msb[5:0] ; s02_msbreg2[5:0] <= s02_msb[5:0] ;
36 s03_msbreg2[5:0] <= s03_msb[5:0] ; s00_lsbreg2[6:0] <= s00_lsbreg1[6:0] ; s01_lsbreg2[6:0] <= s01_lsbreg1[6:0] ; s02_lsbreg2[6:0] <= s02_lsbreg1[6:0] ; s03_lsbreg2[6:0] <= s03_lsbreg1[6:0] ; end // Preserve all lsb sum.
37 // Second stage addition assign s10_lsb[7:0] = s00_lsbreg2[6:0] + s01_lsbreg2[6:0] ; // Add lsb first - s10_lsb[7] is // the carry. assign s11_lsb[7:0] = s02_lsbreg2[6:0] + s03_lsbreg2[6:0] ; // s00,s01 lsbs need not be registered // since addition is already carried // out here.
38 (posedge clk) // Pipeline 3: clk (3). Register msb to // continue addition of msb. begin s10_lsbreg3[7:0] <= s10_lsb[7:0] ; s11_lsbreg3[7:0] <= s11_lsb[7:0] ; s00_msbreg3[5:0] <= s00_msbreg2[5:0] ; // Preserve all lsb sum.
39 all msb sum. // Preserve s01_msbreg3[5:0] <= s01_msbreg2[5:0] ; s02_msbreg3[5:0] <= s02_msbreg2[5:0] ; s03_msbreg3[5:0] <= s03_msbreg2[5:0] ; end assign s10_msb[6:0] = {s00_msbreg3[5], s00_msbreg3[5:0]}+ {s01_msbreg3[5], s01_msbreg3[5:0]}
40 +s10_lsbreg3[7] ; // Add MSB of 2 nd stage with sign extension // and carry in from LSB. // s10_msb[7] is ignored. assign s11_msb[6:0] = {s02_msbreg3[5], s02_msbreg3[5:0]}+ {s03_msbreg3[5], s03_msbreg3[5:0]}+ s11_lsbreg3[7] ; (posedge clk) // Pipeline 4: clk (4). Register msb to
41 // continue addition of msb. begin s10_lsbreg4[6:0] <= s10_lsbreg3[6:0] ; Preserve all lsb sum. // s11_lsbreg4[6:0] <= s11_lsbreg3[6:0] ; s10_msbreg4[6:0] <= s10_msb[6:0] ; Preserve all msb sum. // s11_msbreg4[6:0] <= s11_msb[6:0] ; end
42 // Third stage addition. assign s20_lsb[7:0] = s10_lsbreg4[6:0]+ s11_lsbreg4[6:0] ; // Add lsb first - s20_lsb[7] is // the carry. (posedge clk) // Pipeline 5: clk (5). Register msb to // continue addition of msb. begin
43 s10_msbreg5[6:0] <= s10_msbreg4[6:0] ; Preserve all msb sum. // s11_msbreg5[6:0] <= s11_msbreg4[6:0] ; s20_lsbreg5cy <= s20_lsb[7]; Preserve all lsb sum. // s20_lsbreg5[6:0] <= s20_lsb[6:0]; end // Add third stage MSB result and concatenate
44 // with LSB result to get the final result. assign sum[14:0] = {({s10_msbreg5[6], s10_msbreg5[6:0]}+ {s11_msbreg5[6], s11_msbreg5[6:0]}+ s20_lsbreg5cy), s20_lsbreg5[6:0]}; endmodule
45 TEST BENCH FOR PARALLEL SIGNED ADDER DESIGN `define clkperiodby2 10 `include "adder12s_banno.v" // Use back annotated file. module adder12s_test ( sum ); output [14:0] sum; reg clk ; reg [11:0] n0 ;
46 reg [11:0] n1 ; reg [11:0] n2 ; reg [11:0] n3 ; reg [11:0] n4 ; reg [11:0] n5 ; reg [11:0] n6 ; reg [11:0] n7 ; adder12s u1(.clk(clk),.n0(n0),.n1(n1),.n2(n2),.n3(n3),
47 );.n4(n4),.n5(n5),.n6(n6),.n7(n7),.sum(sum) initial begin clk = 1'b0 ; n0 = 12'h0 ; n1 = 12'h0 ; n2 = 12'h0 ; n3 = 12'h0 ; n4 = 12'h0 ; n5 = 12'h0 ; n6 = 12'h0 ; n7 = 12'h0 ;
48 #17 n0 = 12'hfff ; n1 = 12'hfff ; n2 = 12'hfff ; n3 = 12'hfff ; n4 = 12'hfff ; n5 = 12'hfff ; n6 = 12'hfff ; n7 = 12'hfff ; #20 n0 = 12'h7ff ; n1 = 12'h7ff ; n2 = 12'h7ff ; n3 = 12'h7ff ; n4 = 12'h7ff ; n5 = 12'h7ff ; n6 = 12'h7ff ; n7 = 12'h7ff ; #20 n0 = 12'h800 ; n1 = 12'h800 ; n2 = 12'h800 ; n3 = 12'h800 ; n4 = 12'h800 ;
49 n5 = 12'h800 ; n6 = 12'h800 ; n7 = 12'h800 ; #20 n0 = 12'h001 ; n1 = 12'h001 ; n2 = 12'h001 ; n3 = 12'h001 ; n4 = 12'h001 ; n5 = 12'h001 ; n6 = 12'h001 ; n7 = 12'h001 ; #20 n0 = 12'h001 ; n1 = 12'hfff ; n2 = 12'h001 ; n3 = 12'hfff ; n4 = 12'h001 ; n5 = 12'hfff ; n6 = 12'h001 ; n7 = 12'hfff ; #20 n0 = 12'h7ff ;
50 n1 = 12'h7ff ; n2 = 12'h7ff ; n3 = 12'h7ff ; n4 = 12'h801 ; n5 = 12'h801 ; n6 = 12'h801 ; n7 = 12'h801 ; #20 n0 = 12'haaa ; n1 = 12'h555 ; n2 = 12'haaa ; n3 = 12'h555 ; n4 = 12'haaa ; n5 = 12'h555 ; n6 = 12'haaa ; n7 = 12'h555 ; #20 n0 = 12'h0 ; n1 = 12'h0 ; n2 = 12'h0 ; n3 = 12'h0 ; n4 = 12'h0 ; n5 = 12'h0 ;
51 end n6 = 12'h0 ; n7 = 12'h0 ; #400 $stop ; always #`clkperiodby2 clk <= ~clk ; endmodule Simulation results of eight input parallel signed adder
52
53
54 Synplify synthesis dvlsi_des_verilog\adder12s.v" Verilog syntax check successful! Selecting top level module adder12s Synthesizing module adder12s Performance Summary ******************* Worst slack in design: Requested Estimated Starting Clock Frequency Frequency clk MHz MHz
55 ================================ =========== Requested Estimated Clock Period Period Slack Type inferred ================================ ============== Resource Usage Report for adder12s Mapping to part: xcv600ehq240-8 Cell usage: MUXCY_L 81 uses XORCY 88 uses MUXCY 7 uses
56 FD GND 214 uses 1 use I/O primitives: IBUF 96 uses OBUF 15 uses BUFGP 1 use I/O Register bits: 47 Register bits not including I/Os: 167 (1%) Global Clock Buffers: 1 of 4 (25%) Mapping Summary: Total LUTs: 95 (0%) Mapper successful!
57 Results Xilinx P&R Design Summary: Number of errors: 0 Number of warnings: 0 Number of Slices: 97 out of 6,912 1% Number of Slices containing unrelated logic: 0 out of 97 0% Number of Slice Flip Flops: 167 out of 13,824 1% Number of 4 input LUTs: 95 out of 13,824 1%
58 Number of bonded IOBs: 111 out of % IOB Flip Flops: 47 Number of GCLKs: of 4 25% Number of GCLKIOBs: of 4 25% 1 out 1 out Total equivalent gate count for design: 2,810 Additional JTAG gate count for IOBs: 5,376 Mapping completed. Timing summary: Design statistics:
59 Minimum period: 6.563ns (Maximum frequency: MHz) Minimum input arrival time before clock: 4.259ns Minimum output required time after clock: ns Running DRC. DRC detected 0 errors and 0 warnings. Creating bit map... Saving bit stream in "adder12s.bit". Creating bit mask... Saving mask bit stream in "adder12s.msk".
60 Bitstream generation is complete. COMPARISON OF SERIAL ADDER AND PARALLEL ADDER WITH EIGHT NUMBER OF INPUTS Type of Serial Parallel Adder No. of i/p 8 1 clk cycles No. of o/p 9 1 clk cycles
61 Gate count JTAG gate 2, Max. freq. of Operation in MHz MULTIPLIER DESIGN A NEW ALGORITHM n1 [10:0] n2 [7:0] mult11sx8s
62 clk 8 pipeline stages Example : Consider the evaluation of products of two signed numbers: 1023 x -128 = Binary, signed representation: x = n1 (magnitude) n2 (magnitude) x
63 x P1 P2 P3 P4 P5 P6 P7 P
64 (magnitude) Pipelined design partition P1 P2 P3 P4 LS 1 b + S 11 + LS 1 b S LS 2 b S 2 P5 P6 P7 LS 1 b + + S LS 2 b L S 2
65 P8 LS 1 b S 1 4 Second stage Verilog code for multiplier // Signed multiplication of two numbers, n1 // (11-bit) & n2 (8-bit). // n1 (Partial product, CX for example) is the // multiplicand, and is signed. // n2 (cos term, CT for example) is the signed // multiplier.
66 // Result (CX)CT is in twos complement. // CX, CT are used in DCTQ Processor. // This module has eight pipeline stages to // increase the speed - input is not // registered. module mult11sx8s( clk, n1, n2, result ) ; input clk ; input [10:0] n1 ; input [7:0] n2 ; output [18:0] result ;
67 wire ; n1orn2z wire [10:0] p1 ; wire [10:0] p2 ; wire [10:0] p3 ; wire [10:0] p4 ; wire [10:0] p5 ; wire [10:0] p6 ; wire [10:0] p7 ; wire [10:0] p8 ; wire [6:0] s11a ; wire [6:0] s12a ; wire [6:0] s13a ; wire [6:0] s14a ; wire [5:0] s11b ; wire [5:0] s12b ; wire [5:0] s13b ; wire [5:0] s14b ;
68 wire [12:0] s11 ; wire [12:0] s12 ; wire [12:0] s13 ; wire [12:0] s14 ; wire [7:0] s21a ; wire [7:0] s22a ; wire [6:0] s21b ; wire [6:0] s22b ; wire [14:0] s21 ; wire [14:0] s22 ; wire [8:0] s31a ; wire [7:0] s31b ; wire [17:0] s31 ; wire res_sign ; wire [18:0] res ; reg [10:0] n1_mag ;
69 reg [7:0] n2_mag ; reg [10:0] p1_reg1 ; reg [10:0] p2_reg1 ; reg [10:0] p3_reg1 ; reg [10:0] p4_reg1 ; reg [10:0] p5_reg1 ; reg [10:0] p6_reg1 ; reg [10:0] p7_reg1 ; reg [10:0] p8_reg1 ; reg [6:0] s11a_reg2 ; reg [6:0] s12a_reg2 ;
70 reg [6:0] s13a_reg2 ; reg [6:0] s14a_reg2 ; reg reg reg reg reg reg reg reg reg reg reg reg reg reg n1_reg1; n1_reg2; n1_reg3; n1_reg4; n1_reg5; n1_reg6; n1_reg7; n2_reg1; n2_reg2; n2_reg3; n2_reg4; n2_reg5; n2_reg6; n2_reg7; reg n1orn2z_reg1 ; reg n1orn2z_reg2 ;
71 reg n1orn2z_reg3 ; reg n1orn2z_reg4 ; reg n1orn2z_reg5 ; reg n1orn2z_reg6 ; reg n1orn2z_reg7 ; reg [10:0] p1_reg2 ; reg [10:0] p2_reg2 ; reg [10:0] p3_reg2 ; reg [10:0] p4_reg2 ; reg [10:0] p5_reg2 ; reg [10:0] p6_reg2 ; reg [10:0] p7_reg2 ; reg [10:0] p8_reg2 ;
72 reg [12:0] s11_reg3 ; reg [12:0] s12_reg3 ; reg [12:0] s13_reg3 ; reg [12:0] s14_reg3 ; reg [12:0] s11_reg4 ; reg [12:0] s12_reg4 ; reg [12:0] s13_reg4 ; reg [12:0] s14_reg4 ; reg [7:0] s21a_reg4 ; reg [7:0] s22a_reg4 ;
73 reg [14:0] s21_reg5 ; reg [14:0] s22_reg5 ; reg [14:0] s21_reg6 ; reg [14:0] s22_reg6 ; reg [8:0] s31a_reg6 ; reg [17:0] s31_reg7 ; reg [18:0] result ; begin
74 if(n1[10] == 1'b0) n1_mag = n1[10:0]; else n1_mag = ~n1[10:0] + 1; // Evaluate twos complement. end begin if(n2[7] == 1'b0) n2_mag = n2[7:0]; else n2_mag = ~n2[7:0] + 1; // Evaluate twos complement. end
75 assign n1orn2z = ((n1 == 11'b0) (n2 == 7'b0))? 1'b1:1'b0; // If n1 or n2 is zero, make final // result +0. assign p1 = n1_mag[10:0] & {11{n2_mag[0]}}; products. // Compute the partial assign p2 = n1_mag[10:0] & {11{n2_mag[1]}}; // n1 multiplied by n2 bit '0', etc. assign p3 = n1_mag[10:0] & {11{n2_mag[2]}};
76 assign p4 = n1_mag[10:0] & {11{n2_mag[3]}}; assign p5 = n1_mag[10:0] & {11{n2_mag[4]}}; assign p6 = n1_mag[10:0] & {11{n2_mag[5]}}; assign p7 = n1_mag[10:0] & {11{n2_mag[6]}}; assign p8 = n1_mag[10:0] & {11{n2_mag[7]}}; (posedge clk) // This is the first pipeline register, // clk(1). begin p1_reg1 <= p1; p2_reg1 <= p2; p3_reg1 <= p3;
77 p4_reg1 <= p4; p5_reg1 <= p5; p6_reg1 <= p6; p7_reg1 <= p7; p8_reg1 <= p8; n1_reg1 <= n1[10]; n2_reg1 <= n2[7]; n1orn2z_reg1 <= n1orn2z; end // p1_reg1, etc. means p1, etc. are registered // after positive edge of clk (1), clk (2), // etc. assign s11a[6:0] = p1_reg1[6:1] + p2_reg1[5:0]; is added here. // LSB
78 assign s12a[6:0] = p3_reg1[6:1] + p4_reg1[5:0]; shifts are // Note the left // taken care of. assign s13a[6:0] = p5_reg1[6:1] + p6_reg1[5:0]; p3, p5 and p7. // for p1, assign s14a[6:0] = p7_reg1[6:1] + p8_reg1[5:0]; etc. will be // p1_reg1[0],
79 at the clk (2). etc. are the // processed // s11a[6], // carry bits. (posedge clk) // This is the second pipeline register, // clk (2). begin s11a_reg2 <= s11a; // Store LSB partial sums. s12a_reg2 <= s12a; s13a_reg2 <= s13a; s14a_reg2 <= s14a; p1_reg2[10:7] <= p1_reg1[10:7];
80 // Store MSB of partial products. p2_reg2[10:6] <= p2_reg1[10:6]; p3_reg2[10:7] <= p3_reg1[10:7]; p4_reg2[10:6] <= p4_reg1[10:6]; p5_reg2[10:7] <= p5_reg1[10:7]; p6_reg2[10:6] <= p6_reg1[10:6]; p7_reg2[10:7] <= p7_reg1[10:7]; p8_reg2[10:6] <= p8_reg1[10:6]; p1_reg2[0] <= p1_reg1[0]; // Store '0' th bit // since it is not p3_reg2[0] <= p3_reg1[0]; // yet processed. p5_reg2[0] <= p5_reg1[0]; p7_reg2[0] <= p7_reg1[0]; n1_reg2 <= n1_reg1;
81 // Also store sign bits and zero status. n2_reg2 <= n2_reg1; n1orn2z_reg2 <= n1orn2z_reg1; end // MSB is added here along with carry. assign s11b[5:0] = {1'b0, p1_reg2[10:7]} + p2_reg2[10:6] + s11a_reg2[6]; assign s12b[5:0] = {1'b0, p3_reg2[10:7]} + p4_reg2[10:6] +
82 s12a_reg2[6]; assign s13b[5:0] = {1'b0, p5_reg2[10:7]} + p6_reg2[10:6] + s13a_reg2[6]; assign s14b[5:0] = {1'b0, p7_reg2[10:7]} + p8_reg2[10:6] + s14a_reg2[6]; are here. // MSBs & LSBs // concatenated
83 assign s11[12:0] = {s11b, s11a_reg2[5:0], p1_reg2[0]}; '0' th bit respectively. // MSB, LSB, // assign s12[12:0] = {s12b, s12a_reg2[5:0], p3_reg2[0]}; assign s13[12:0] = {s13b, s13a_reg2[5:0], p5_reg2[0]}; assign s14[12:0] = {s14b, s14a_reg2[5:0], p7_reg2[0]};
84 (posedge clk) // This is the third pipeline register, // clk (3). First stage results. begin s11_reg3 <= s11; for further processing. s12_reg3 <= s12; s13_reg3 <= s13; s14_reg3 <= s14; // Store // n1_reg3 <= n1_reg2; n2_reg3 <= n2_reg2; n1orn2z_reg3 <= n1orn2z_reg2;
85 end assign s21a[7:0] = s11_reg3[8:2] + s12_reg3[6:0]; s21a[7]is the carry. // assign s22a[7:0] = s13_reg3[8:2] + s14_reg3[6:0]; sum, 2nd stage. // LSB (posedge clk)
86 // This is the fourth pipeline register, // clk (4). begin s11_reg4[12:9] <= s11_reg3[12:9]; // Store bits not yet processed. s11_reg4[1:0] <= s11_reg3[1:0]; s12_reg4[12:7] <= s12_reg3[12:7]; s13_reg4[12:9] <= s13_reg3[12:9]; s13_reg4[1:0] <= s13_reg3[1:0]; s14_reg4[12:7] <= s14_reg3[12:7]; s21a_reg4 <= s21a;
87 // Store LSB, second stage partial sums. s22a_reg4 <= s22a; n1_reg4 <= n1_reg3; n2_reg4 <= n2_reg3; n1orn2z_reg4 <= n1orn2z_reg3; end // Add second stage MSBs with carry. assign s21b[6:0] = {2'b0, s11_reg4[12:9]} + s12_reg4[12:7] + s21a_reg4[7];
88 assign s22b[6:0] = {2'b0, s13_reg4[12:9]} + s14_reg4[12:7] + s22a_reg4[7]; assign s21[14:0] = {s21b[5:0], s21a_reg4[6:0], s11_reg4[1:0]} ; LSB, [1:0]} // {MSB, // Result will never effect s21b[6], // which is always 0. assign s22[14:0] = {s22b[5:0], s22a_reg4[6:0],
89 s13_reg4[1:0]} ; (posedge clk) // This is the fifth pipeline register, // clk (5). begin s21_reg5 <= s21; // Store for further processing. s22_reg5 <= s22; n1_reg5 <= n1_reg4; n2_reg5 <= n2_reg4; n1orn2z_reg5 <= n1orn2z_reg4; end
90 assign s31a[8:0] = s21_reg5[11:4] + s22_reg5[7:0]; // 3rd stage LSB computed here. (posedge clk) // This is the sixth pipeline register, // clk (6). begin s21_reg6[14:12]<= s21_reg5[14:12]; Preserve MSB. s22_reg6[14:8] <= s22_reg5[14:8]; //
91 s21_reg6[3:0] <= s21_reg5[3:0]; s31a_reg6 <= s31a; //3rd stage LSB // registered here. n1_reg6 <= n1_reg5; n2_reg6 <= n2_reg5; n1orn2z_reg6 <= n1orn2z_reg5; end assign s31b[7:0] = {4'b0, s21_reg6[14:12]} + s22_reg6[14:8] + s31a_reg6[8]; // 3rd stage MSB computed here.
92 assign s31[17:0] = {s31b[5:0], s31a_reg6[7:0], s21_reg6[3:0]} ; // Put MSB, LSB and [3:0] bits together. // Note that the 3rd stage result will never // effect s31b[6:5], which is always 0. (posedge clk) // This is the seventh pipeline register, // clk (7). begin n1_reg7 <= n1_reg6;
93 // Store intermediate results. n2_reg7 <= n2_reg6; s31_reg7 <= s31; n1orn2z_reg7 <= n1orn2z_reg6; end assign res_sign = n1_reg7^n2_reg7; means a -ve no. // '1' assign res[18:0] = (res_sign )? {1'b1, (~s31_reg7 + 1'b1)}: {1'b0, s31_reg7};
94 (posedge clk) // This is the eighth pipeline register, // clk (8). begin if (n1orn2z_reg7 == 1'b1) result[18:0] <= 19'b0; else result[18:0] <= res; // This is the final result // (product of two numbers) // in twos complement. end
95 endmodule TEST BENCH FOR MULTIPLIER `define clkperiodby2 10 `include "mult11sx8s_banno.v" module mult11sx8s_test ( result ); output [18:0] result;
96 reg clk ; reg [10:0] n1 ; reg [7:0] n2 ; mult11sx8s u1( initial begin clk = 1'b0 ; n1 = 11'h0 ;.clk(clk),.n1(n1),.n2(n2),.result(result) );
97 n2 = 8'h0 ; #17 n1 = 11'h555 ; n2 = 8'h55; #20 n1 = 11'h2aa ; n2 = 8'haa; #20 n1 = 11'h7ff ; n2 = 8'h80; #20 n1 = 11'h555 ; n2 = 8'hff; #20 n1 = 11'h7ff ; n2 = 8'h81; #20 n1 = 11'h555 ; n2 = 8'h81; #20 n1 = 11'h2aa ; n2 = 8'h81;
98 end #20 n1 = 11'h7ff ; n2 = 8'h00; #20 n1 = 11'h7ff ; n2 = 8'h7f; #20 n1 = 11'h000 ; n2 = 8'hff; #20 n1 = 11'h000 ; n2 = 8'h7f; #400 $stop ; always #`clkperiodby2 clk <= ~clk ; endmodule
99 Simulation results of multiplier
100
101 Synplify dvlsi_des_verilog\mult11sx8s.v" Verilog syntax check successful!
102 Selecting top level module mult11sx8s Synthesizing module vlsi_des_verilog\mult11sx8s.v":3 46:0:346:5 Found seqshift n1orn2z, depth=7, vlsi_des_verilog\mult11sx8s.v":3 46:0:346:5 Found seqshift n1, depth=6, vlsi_des_verilog\mult11sx8s.v":3 46:0:346:5 Found seqshift n2, depth=6, vlsi_des_verilog\mult11sx8s.v":2 02:0:202:5 Register bit s14a_reg2[6] is always 0, Performance Summary
103 ******************* Worst slack in design: Requested Estimated Starting Clock Frequency Frequency clk 50.0 MHz MHz ================================ =========== Requested Estimated Clock Period Period Slack Type
104 inferred ================================ ============== Resource Usage Report for mult11sx8s Mapping to part: xcv600ehq240-8 Cell usage: MUXCY_L 100 uses XORCY 109 uses MUXCY 9 uses FDR 105 uses FD 209 uses GND 1 use VCC 1 use I/O primitives: IBUF 19 uses OBUF 19 uses BUFGP 1 use
105 SRL primitives: SRL16 9 uses I/O Register bits: 22 Register bits not including I/Os: 292 (2%) Global Clock Buffers: 1 of 4 (25%) Mapping Summary: Total LUTs: 181 (1%) Mapper successful! Xilinx P&R Results Design Summary: Number of errors: 0
106 Number of warnings: 0 Number of Slices: 201 out of 6,912 2% Number of Slices containing unrelated logic: 0 out of 201 0% Number of Slice Flip Flops: 292 out of 13,824 2% Total Number 4 input LUTs: 178 out of 13,824 1% Number used as LUTs:161 Number used as a route-thru: 8 Number used as Shift registers: 9 Number of bonded IOBs: 38 out of % IOB Flip Flops: 22 Number of GCLKs: 1 out of 4 25%
107 Number of GCLKIOBs: of 4 25% 1 out Total equivalent gate count for design: 5,284 Additional JTAG gate count for IOBs: 1,872 Mapping completed. Timing summary: Timing errors: 0 Score: 0 Constraints cover 2328 paths, 0 nets, and 896 connections (100.0% coverage) Design statistics: Minimum period: ns (Maximum
108 82.427MHz) frequency: Minimum input arrival time before clock: ns Minimum output required time after clock: 5.617ns Running DRC. DRC detected 0 errors and 0 warnings. Creating bit map... Saving bit stream in "mult11sx8s.bit". Creating bit mask... Saving mask bit stream in "mult11sx8s.msk". Bitstream generation is complete.
109
Asynchronous FIFO Design
Asynchronous FIFO Design 2.1 Introduction: An Asynchronous FIFO Design refers to a FIFO Design where in the data values are written to the FIFO memory from one clock domain and the data values are read
More informationDigital Design with FPGAs. By Neeraj Kulkarni
Digital Design with FPGAs By Neeraj Kulkarni Some Basic Electronics Basic Elements: Gates: And, Or, Nor, Nand, Xor.. Memory elements: Flip Flops, Registers.. Techniques to design a circuit using basic
More informationDigital Circuit Design and Language. Datapath Design. Chang, Ik Joon Kyunghee University
Digital Circuit Design and Language Datapath Design Chang, Ik Joon Kyunghee University Typical Synchronous Design + Control Section : Finite State Machine + Data Section: Adder, Multiplier, Shift Register
More informationBinary Adders. Ripple-Carry Adder
Ripple-Carry Adder Binary Adders x n y n x y x y c n FA c n - c 2 FA c FA c s n MSB position Longest delay (Critical-path delay): d c(n) = n d carry = 2n gate delays d s(n-) = (n-) d carry +d sum = 2n
More informationFPGA Matrix Multiplier
FPGA Matrix Multiplier In Hwan Baek Henri Samueli School of Engineering and Applied Science University of California Los Angeles Los Angeles, California Email: chris.inhwan.baek@gmail.com David Boeck Henri
More informationDesign Problem 5 Solution
CSE 260 Digital Computers: Organization and Logical Design Design Problem 5 Solution Jon Turner Due 5/3/05 1. (150 points) In this problem, you are to extend the design of the basic processor to implement
More informationPROJECT REPORT - UART
Tanvi Shama 200601196 Akshay Soni 200601148 DAIICT PROJECT REPORT - UART Digital System Architecture 2 Project Report - UART S.No Topic Page No. 1. PROJECT STATEMENT 3 2. FUNCTIONAL SPECIFICATIONS INTRODUCTION
More informationFPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1
FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1 Anurag Dwivedi Digital Design : Bottom Up Approach Basic Block - Gates Digital Design : Bottom Up Approach Gates -> Flip Flops Digital
More informationDigital Integrated Circuits
Digital Integrated Circuits Lecture 4 Jaeyong Chung System-on-Chips (SoC) Laboratory Incheon National University BCD TO EXCESS-3 CODE CONVERTER 0100 0101 +0011 +0011 0111 1000 LSB received first Chung
More informationVirtex-II Architecture
Virtex-II Architecture Block SelectRAM resource I/O Blocks (IOBs) edicated multipliers Programmable interconnect Configurable Logic Blocks (CLBs) Virtex -II architecture s core voltage operates at 1.5V
More informationTopics. Midterm Finish Chapter 7
Lecture 9 Topics Midterm Finish Chapter 7 ROM (review) Memory device in which permanent binary information is stored. Example: 32 x 8 ROM Five input lines (2 5 = 32) 32 outputs, each representing a memory
More informationDigital Logic & Computer Design CS Professor Dan Moldovan Spring 2010
Digital Logic & Computer Design CS 434 Professor Dan Moldovan Spring 2 Copyright 27 Elsevier 5- Chapter 5 :: Digital Building Blocks Digital Design and Computer Architecture David Money Harris and Sarah
More informationCAD for VLSI Design - I. Lecture 21 V. Kamakoti and Shankar Balachandran
CAD for VLSI Design - I Lecture 21 V. Kamakoti and Shankar Balachandran Overview of this Lecture Understanding the process of Logic synthesis Logic Synthesis of HDL constructs Logic Synthesis What is this?
More informationVerilog Module 1 Introduction and Combinational Logic
Verilog Module 1 Introduction and Combinational Logic Jim Duckworth ECE Department, WPI 1 Module 1 Verilog background 1983: Gateway Design Automation released Verilog HDL Verilog and simulator 1985: Verilog
More informationVerilog Sequential Logic. Verilog for Synthesis Rev C (module 3 and 4)
Verilog Sequential Logic Verilog for Synthesis Rev C (module 3 and 4) Jim Duckworth, WPI 1 Sequential Logic Module 3 Latches and Flip-Flops Implemented by using signals in always statements with edge-triggered
More informationFPGA: FIELD PROGRAMMABLE GATE ARRAY Verilog: a hardware description language. Reference: [1]
FPGA: FIELD PROGRAMMABLE GATE ARRAY Verilog: a hardware description language Reference: [] FIELD PROGRAMMABLE GATE ARRAY FPGA is a hardware logic device that is programmable Logic functions may be programmed
More informationMASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences
MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences Introductory Digital Systems Lab (6.111) uiz - Spring 2004 Prof. Anantha Chandrakasan Student Name: Problem
More informationECE 4514 Digital Design II. Spring Lecture 20: Timing Analysis and Timed Simulation
ECE 4514 Digital Design II Lecture 20: Timing Analysis and Timed Simulation A Tools/Methods Lecture Topics Static and Dynamic Timing Analysis Static Timing Analysis Delay Model Path Delay False Paths Timing
More informationTSEA44 - Design for FPGAs
2015-11-24 Now for something else... Adapting designs to FPGAs Why? Clock frequency Area Power Target FPGA architecture: Xilinx FPGAs with 4 input LUTs (such as Virtex-II) Determining the maximum frequency
More information: : (91-44) (Office) (91-44) (Residence)
Course: VLSI Circuits (Video Course) Faculty Coordinator(s) : Prof. S. Srinivasan Department of Electrical Engineering Indian Institute of Technology Madras Chennai 600036 Email Telephone : srinis@iitm.ac.in,
More informationECE Digital System Design & Synthesis Exercise 1 - Logic Values, Data Types & Operators - With Answers
ECE 601 - Digital System Design & Synthesis Exercise 1 - Logic Values, Data Types & Operators - With Answers Fall 2001 Final Version (Important changes from original posted Exercise 1 shown in color) Variables
More informationChapter 5. Digital Design and Computer Architecture, 2 nd Edition. David Money Harris and Sarah L. Harris. Chapter 5 <1>
Chapter 5 Digital Design and Computer Architecture, 2 nd Edition David Money Harris and Sarah L. Harris Chapter 5 Chapter 5 :: Topics Introduction Arithmetic Circuits umber Systems Sequential Building
More informationA Verilog Primer. An Overview of Verilog for Digital Design and Simulation
A Verilog Primer An Overview of Verilog for Digital Design and Simulation John Wright Vighnesh Iyer Department of Electrical Engineering and Computer Sciences College of Engineering, University of California,
More informationTopics. Midterm Finish Chapter 7
Lecture 9 Topics Midterm Finish Chapter 7 Xilinx FPGAs Chapter 7 Spartan 3E Architecture Source: Spartan-3E FPGA Family Datasheet CLB Configurable Logic Blocks Each CLB contains four slices Each slice
More informationSynthesis of Language Constructs. 5/10/04 & 5/13/04 Hardware Description Languages and Synthesis
Synthesis of Language Constructs 1 Nets Nets declared to be input or output ports are retained Internal nets may be eliminated due to logic optimization User may force a net to exist trireg, tri0, tri1
More informationXilinx ASMBL Architecture
FPGA Structure Xilinx ASMBL Architecture Design Flow Synthesis: HDL to FPGA primitives Translate: FPGA Primitives to FPGA Slice components Map: Packing of Slice components into Slices, placement of Slices
More informationTOPIC : Verilog Synthesis examples. Module 4.3 : Verilog synthesis
TOPIC : Verilog Synthesis examples Module 4.3 : Verilog synthesis Example : 4-bit magnitude comptarator Discuss synthesis of a 4-bit magnitude comparator to understand each step in the synthesis flow.
More informationVERILOG HDL. 1 ENGN3213: Digital Systems and Microprocessors L#5-6
VERILOG HDL 1 ENGN3213: Digital Systems and Microprocessors L#5-6 Some Reference Material (mostly advanced) \vspace{10mm} http://engnet.anu.edu.au/decourses/engn3213/documents/verilog/ VerilogIntro SASAKI.pdf
More informationLecture 3: Modeling in VHDL. EE 3610 Digital Systems
EE 3610: Digital Systems 1 Lecture 3: Modeling in VHDL VHDL: Overview 2 VHDL VHSIC Hardware Description Language VHSIC=Very High Speed Integrated Circuit Programming language for modelling of hardware
More informationDesign Problem 4 Solution
CSE 260 Digital Computers: Organization and Logical Design Design Problem 4 Solution Jon Turner Due 4/13/06 1. (125 points). In this problem, you will design a packet FIFO, which is a circuit that temporarily
More informationEECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis
EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis Jan 31, 2012 John Wawrzynek Spring 2012 EECS150 - Lec05-verilog_synth Page 1 Outline Quick review of essentials of state elements Finite State
More informationRUN-TIME RECONFIGURABLE IMPLEMENTATION OF DSP ALGORITHMS USING DISTRIBUTED ARITHMETIC. Zoltan Baruch
RUN-TIME RECONFIGURABLE IMPLEMENTATION OF DSP ALGORITHMS USING DISTRIBUTED ARITHMETIC Zoltan Baruch Computer Science Department, Technical University of Cluj-Napoca, 26-28, Bariţiu St., 3400 Cluj-Napoca,
More informationVERILOG 2: LANGUAGE BASICS
VERILOG 2: LANGUAGE BASICS Verilog module Modules are basic building blocks. These are two example module definitions which you should use: // Safer traditional method module abc (in1, in2, out); input
More informationWriting Circuit Descriptions 8
8 Writing Circuit Descriptions 8 You can write many logically equivalent descriptions in Verilog to describe a circuit design. However, some descriptions are more efficient than others in terms of the
More informationVerilog. What is Verilog? VHDL vs. Verilog. Hardware description language: Two major languages. Many EDA tools support HDL-based design
Verilog What is Verilog? Hardware description language: Are used to describe digital system in text form Used for modeling, simulation, design Two major languages Verilog (IEEE 1364), latest version is
More informationIn this lecture, we will focus on two very important digital building blocks: counters which can either count events or keep time information, and
In this lecture, we will focus on two very important digital building blocks: counters which can either count events or keep time information, and shift registers, which is most useful in conversion between
More informationUniversity of Toronto Faculty of Applied Science and Engineering Edward S. Rogers Sr. Department of Electrical and Computer Engineering
University of Toronto Faculty of Applied Science and Engineering Edward S. Rogers Sr. Department of Electrical and Computer Engineering Final Examination ECE 241F - Digital Systems Examiners: S. Brown,
More informationField Programmable Gate Array (FPGA)
Field Programmable Gate Array (FPGA) Lecturer: Krébesz, Tamas 1 FPGA in general Reprogrammable Si chip Invented in 1985 by Ross Freeman (Xilinx inc.) Combines the advantages of ASIC and uc-based systems
More informationHIGH-PERFORMANCE RECONFIGURABLE FIR FILTER USING PIPELINE TECHNIQUE
HIGH-PERFORMANCE RECONFIGURABLE FIR FILTER USING PIPELINE TECHNIQUE Anni Benitta.M #1 and Felcy Jeba Malar.M *2 1# Centre for excellence in VLSI Design, ECE, KCG College of Technology, Chennai, Tamilnadu
More informationINTRODUCTION TO FPGA ARCHITECTURE
3/3/25 INTRODUCTION TO FPGA ARCHITECTURE DIGITAL LOGIC DESIGN (BASIC TECHNIQUES) a b a y 2input Black Box y b Functional Schematic a b y a b y a b y 2 Truth Table (AND) Truth Table (OR) Truth Table (XOR)
More informationECE 574: Modeling and Synthesis of Digital Systems using Verilog and VHDL. Fall 2017 Final Exam (6.00 to 8.30pm) Verilog SOLUTIONS
ECE 574: Modeling and Synthesis of Digital Systems using Verilog and VHDL Fall 2017 Final Exam (6.00 to 8.30pm) Verilog SOLUTIONS Note: Closed book no notes or other material allowed apart from the one
More informationECE 545 Lecture 12. FPGA Resources. George Mason University
ECE 545 Lecture 2 FPGA Resources George Mason University Recommended reading 7 Series FPGAs Configurable Logic Block: User Guide Overview Functional Details 2 What is an FPGA? Configurable Logic Blocks
More informationIntroduction to WebPACK 4.1 for FPGAs. Using Xilinx WebPACK Software to Create FPGA Designs for the XSA Board
Introduction to WebPACK 4.1 for FPGAs Using Xilinx WebPACK Software to Create FPGA Designs for the XSA Board Release date: 10/29/2001 All XS-prefix product designations are trademarks of XESS Corp. All
More informationCOPYRIGHTED MATERIAL. Architecting Speed. Chapter 1. Sophisticated tool optimizations are often not good enough to meet most design
Chapter 1 Architecting Speed Sophisticated tool optimizations are often not good enough to meet most design constraints if an arbitrary coding style is used. This chapter discusses the first of three primary
More information16 BIT IMPLEMENTATION OF ASYNCHRONOUS TWOS COMPLEMENT ARRAY MULTIPLIER USING MODIFIED BAUGH-WOOLEY ALGORITHM AND ARCHITECTURE.
16 BIT IMPLEMENTATION OF ASYNCHRONOUS TWOS COMPLEMENT ARRAY MULTIPLIER USING MODIFIED BAUGH-WOOLEY ALGORITHM AND ARCHITECTURE. AditiPandey* Electronics & Communication,University Institute of Technology,
More informationMULTIPLE OPERAND ADDITION. Multioperand Addition
MULTIPLE OPERAND ADDITION Chapter 3 Multioperand Addition Add up a bunch of numbers Used in several algorithms Multiplication, recurrences, transforms, and filters Signed (two s comp) and unsigned Don
More informationSpring 2017 EE 3613: Computer Organization Chapter 5: Processor: Datapath & Control - 2 Verilog Tutorial
Spring 2017 EE 3613: Computer Organization Chapter 5: Processor: Datapath & Control - 2 Verilog Tutorial Avinash Kodi Department of Electrical Engineering & Computer Science Ohio University, Athens, Ohio
More informationOutline. Introduction to Structured VLSI Design. Signed and Unsigned Integers. 8 bit Signed/Unsigned Integers
Outline Introduction to Structured VLSI Design Integer Arithmetic and Pipelining Multiplication in the digital domain HW mapping Pipelining optimization Joachim Rodrigues Signed and Unsigned Integers n-1
More informationCSE 591: Advanced Hardware Design and Verification (2012 Spring) LAB #0
Lab 0: Tutorial on Xilinx Project Navigator & ALDEC s Active-HDL Simulator CSE 591: Advanced Hardware Design and Verification Assigned: 01/05/2011 Due: 01/19/2011 Table of Contents 1 Overview... 2 1.1
More informationRegister Transfer Level in Verilog: Part I
Source: M. Morris Mano and Michael D. Ciletti, Digital Design, 4rd Edition, 2007, Prentice Hall. Register Transfer Level in Verilog: Part I Lan-Da Van ( 范倫達 ), Ph. D. Department of Computer Science National
More informationSpeaker: Kayting Adviser: Prof. An-Yeu Wu Date: 2009/11/23
98-1 Under-Graduate Project Synthesis of Combinational Logic Speaker: Kayting Adviser: Prof. An-Yeu Wu Date: 2009/11/23 What is synthesis? Outline Behavior Description for Synthesis Write Efficient HDL
More informationRegister Transfer Level
Register Transfer Level Something between the logic level and the architecture level A convenient way to describe synchronous sequential systems State diagrams for pros Hierarchy of Designs The design
More informationIntroduction to WebPACK 5.2 for FPGAs. Using Xilinx WebPACK Software to Create FPGA Designs for the XSB-300E Board
Introduction to WebPACK 5.2 for FPGAs Using Xilinx WebPACK Software to Create FPGA Designs for the XSB-300E Board Release date: 10/27/2003 All XS-prefix product designations are trademarks of XESS Corp.
More informationPAGE NO: EXP NO: 1A SIMULATION OF HALF ADDER AND FULL ADDER. DATE: AIM: To design, simulate and synthesize the Half adder and Full adder. TOOLS REQUIRED: SOFTWARE: XILINX ISE 9.1i ALGORITHM: 1. Start the
More informationEE178 Spring 2018 Lecture Module 4. Eric Crabill
EE178 Spring 2018 Lecture Module 4 Eric Crabill Goals Implementation tradeoffs Design variables: throughput, latency, area Pipelining for throughput Retiming for throughput and latency Interleaving for
More informationa, b sum module add32 sum vector bus sum[31:0] sum[0] sum[31]. sum[7:0] sum sum overflow module add32_carry assign
I hope you have completed Part 1 of the Experiment. This lecture leads you to Part 2 of the experiment and hopefully helps you with your progress to Part 2. It covers a number of topics: 1. How do we specify
More information3 Designing Digital Systems with Algorithmic State Machine Charts
3 Designing with Algorithmic State Machine Charts An ASM chart is a method of describing the sequential operations of a digital system which has to implement an algorithm. An algorithm is a well defined
More informationMicrocomputers. Outline. Number Systems and Digital Logic Review
Microcomputers Number Systems and Digital Logic Review Lecture 1-1 Outline Number systems and formats Common number systems Base Conversion Integer representation Signed integer representation Binary coded
More informationGraphics: Alexandra Nolte, Gesine Marwedel, Universität Dortmund. RTL Synthesis
Graphics: Alexandra Nolte, Gesine Marwedel, 2003 Universität Dortmund RTL Synthesis Purpose of HDLs Purpose of Hardware Description Languages: Capture design in Register Transfer Language form i.e. All
More informationIntroduction to Verilog/System Verilog
NTUEE DCLAB Feb. 27, 2018 Introduction to Verilog/System Verilog Presenter: Yao-Pin Wang 王耀斌 Advisor: Prof. Chia-Hsiang Yang 楊家驤 Dept. of Electrical Engineering, NTU National Taiwan University What is
More informationChapter 5 Registers & Counters
University of Wisconsin - Madison ECE/Comp Sci 352 Digital Systems Fundamentals Kewal K. Saluja and Yu Hen Hu Spring 2002 Chapter 5 Registers & Counters Originals by: Charles R. Kime Modified for course
More informationPrachi Sharma 1, Rama Laxmi 2, Arun Kumar Mishra 3 1 Student, 2,3 Assistant Professor, EC Department, Bhabha College of Engineering
A Review: Design of 16 bit Arithmetic and Logical unit using Vivado 14.7 and Implementation on Basys 3 FPGA Board Prachi Sharma 1, Rama Laxmi 2, Arun Kumar Mishra 3 1 Student, 2,3 Assistant Professor,
More informationSpiral 1 / Unit 4 Verilog HDL. Digital Circuit Design Steps. Digital Circuit Design OVERVIEW. Mark Redekopp. Description. Verification.
1-4.1 1-4.2 Spiral 1 / Unit 4 Verilog HDL Mark Redekopp OVERVIEW 1-4.3 1-4.4 Digital Circuit Design Steps Digital Circuit Design Description Design and computer-entry of circuit Verification Input Stimulus
More informationVerilog for High Performance
Verilog for High Performance Course Description This course provides all necessary theoretical and practical know-how to write synthesizable HDL code through Verilog standard language. The course goes
More informationHardware Description Languages (HDLs) Verilog
Hardware Description Languages (HDLs) Verilog Material from Mano & Ciletti book By Kurtulus KULLU Ankara University What are HDLs? A Hardware Description Language resembles a programming language specifically
More informationCombinational Logic II
Combinational Logic II Ranga Rodrigo July 26, 2009 1 Binary Adder-Subtractor Digital computers perform variety of information processing tasks. Among the functions encountered are the various arithmetic
More informationEEL 4783: HDL in Digital System Design
EEL 4783: HDL in Digital System Design Lecture 15: Logic Synthesis with Verilog Prof. Mingjie Lin 1 Verilog Synthesis Synthesis vs. Compilation Descriptions mapped to hardware Verilog design patterns for
More informationLecture 7. Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits. Hardware Description Language)
Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits Hardware Description Language) 1 Standard ICs PLD: Programmable Logic Device CPLD: Complex PLD FPGA: Field Programmable
More informationTailoring the 32-Bit ALU to MIPS
Tailoring the 32-Bit ALU to MIPS MIPS ALU extensions Overflow detection: Carry into MSB XOR Carry out of MSB Branch instructions Shift instructions Slt instruction Immediate instructions ALU performance
More informationECEN 468 Advanced Logic Design
ECEN 468 Advanced Logic Design Lecture 26: Verilog Operators ECEN 468 Lecture 26 Operators Operator Number of Operands Result Arithmetic 2 Binary word Bitwise 2 Binary word Reduction 1 Bit Logical 2 Boolean
More informationEN164: Design of Computing Systems Lecture 06: Lab Foundations / Verilog 2
EN164: Design of Computing Systems Lecture 06: Lab Foundations / Verilog 2 Professor Sherief Reda http://scaleenginbrownedu Electrical Sciences and Computer Engineering School of Engineering Brown University
More informationHardware Design Environments. Dr. Mahdi Abbasi Computer Engineering Department Bu-Ali Sina University
Hardware Design Environments Dr. Mahdi Abbasi Computer Engineering Department Bu-Ali Sina University Outline Welcome to COE 405 Digital System Design Design Domains and Levels of Abstractions Synthesis
More informationNikhil Gupta. FPGA Challenge Takneek 2012
Nikhil Gupta FPGA Challenge Takneek 2012 RECAP FPGA Field Programmable Gate Array Matrix of logic gates Can be configured in any way by the user Codes for FPGA are executed in parallel Configured using
More informationUNIVERSITY OF TORONTO FACULTY OF APPLIED SCIENCE AN:p ENGINEERING. ECE241F - Digital Syst~ms Final Examination
~.. UNIVERSITY OF TORONTO FACULTY OF APPLIED SCIENCE AN:p ENGINEERING ECE241F - Digital Syst~ms Final Examination December 19, 2017, 2:00pm-4:30pm Duration: 2.5 hours Examiners: P. Anderson, P. Chow and
More informationChapter 3: Dataflow Modeling
Chapter 3: Dataflow Modeling Prof. Soo-Ik Chae Digital System Designs and Practices Using Verilog HDL and FPGAs @ 2008, John Wiley 3-1 Objectives After completing this chapter, you will be able to: Describe
More informationECE 645: Lecture 1. Basic Adders and Counters. Implementation of Adders in FPGAs
ECE 645: Lecture Basic Adders and Counters Implementation of Adders in FPGAs Required Reading Behrooz Parhami, Computer Arithmetic: Algorithms and Hardware Design Chapter 5, Basic Addition and Counting,
More informationC A R L E T O N U N I V E R S I T Y. FINAL EXAMINATION April Duration: 3 Hours No. of Students: 108
C A R L E T O N U N I V E R S I T Y FINAL EXAMINATION April 2011 Duration: 3 Hours No. of Students: 108 Department Name & Course Number: ELEC 3500 Digital Electronics Course Instructor(s): Ralph Mason
More informationECE 341 Midterm Exam
ECE 341 Midterm Exam Time allowed: 90 minutes Total Points: 75 Points Scored: Name: Problem No. 1 (10 points) For each of the following statements, indicate whether the statement is TRUE or FALSE: (a)
More informationReview from last time. CS152 Computer Architecture and Engineering Lecture 6. Verilog (finish) Multiply, Divide, Shift
Review from last time CS152 Computer Architecture and Engineering Lecture 6 Verilog (finish) Multiply, Divide, Shift February 11, 2004 John Kubiatowicz (www.cs.berkeley.edu/~kubitron) lecture slides: http://www-inst.eecs.berkeley.edu/~cs152/
More informationFormat. 10 multiple choice 8 points each. 1 short answer 20 points. Same basic principals as the midterm
Final Review Format 10 multiple choice 8 points each Make sure to show your work Can write a description to the side as to why you think your answer is correct for possible partial credit 1 short answer
More informationVerilog Tutorial. Introduction. T. A.: Hsueh-Yi Lin. 2008/3/12 VLSI Digital Signal Processing 2
Verilog Tutorial T. A.: Hsueh-Yi Lin Introduction 2008/3/12 VLSI Digital Signal Processing 2 Verilog: A common language for industry HDL is a common way for hardware design Verilog VHDL Verilog is widely
More informationALTERA M9K EMBEDDED MEMORY BLOCKS
ALTERA M9K EMBEDDED MEMORY BLOCKS M9K Overview M9K memories are Altera s embedded high-density memory arrays Nearly all modern FPGAs include something similar of varying sizes 8192 bits per block (9216
More informationTable of Contents TABLE OF CONTENTS...2
AUDIO COMPRESSION Table of Contents TABLE OF CONTENTS...2 OVERVIEW...3 1.1 PROJECT GOALS...3 1.2 DESIGN REQUIREMENTS... 3 1.3 THEORY... 3 1.4 SYSTEM OVERVIEW... 6 1.5 BLOCKS OVERVIEW... 8 2.1 Vhdl codes
More informationDigital Design (VIMIAA01) Introduction to the Verilog HDL
BUDAPEST UNIVERSITY OF TECHNOLOGY AND ECONOMICS FACULTY OF ELECTRICAL ENGINEERING AND INFORMATICS DEPARTMENT OF MEASUREMENT AND INFORMATION SYSTEMS Digital Design (VIMIAA01) Introduction to the Verilog
More informationSynthesis of Combinational and Sequential Circuits with Verilog
Synthesis of Combinational and Sequential Circuits with Verilog What is Verilog? Hardware description language: Are used to describe digital system in text form Used for modeling, simulation, design Two
More informationLaboratory Exercise 7
Laboratory Exercise 7 Finite State Machines This is an exercise in using finite state machines. Part I We wish to implement a finite state machine (FSM) that recognizes two specific sequences of applied
More informationPESIT Bangalore South Campus
INTERNAL ASSESSMENT TEST III Date : 21/11/2017 Max Marks : 40 Subject & Code : Computer Organization (15CS34) Semester : III (A & B) Name of the faculty: Mrs. Sharmila Banu Time : 11.30 am 1.00 pm Answer
More informationCourse Topics - Outline
Course Topics - Outline Lecture 1 - Introduction Lecture 2 - Lexical conventions Lecture 3 - Data types Lecture 4 - Operators Lecture 5 - Behavioral modeling A Lecture 6 Behavioral modeling B Lecture 7
More informationPipelined Quadratic Equation based Novel Multiplication Method for Cryptographic Applications
, Vol 7(4S), 34 39, April 204 ISSN (Print): 0974-6846 ISSN (Online) : 0974-5645 Pipelined Quadratic Equation based Novel Multiplication Method for Cryptographic Applications B. Vignesh *, K. P. Sridhar
More informationCSE140L: Components and Design
CSE140L: Components and Design Techniques for Digital Systems Lab Tajana Simunic Rosing Source: Vahid, Katz, Culler 1 Grade distribution: 70% Labs 35% Lab 4 30% Lab 3 20% Lab 2 15% Lab 1 30% Final exam
More informationEECS 151/251A: SRPING 2017 MIDTERM 1
University of California College of Engineering Department of Electrical Engineering and Computer Sciences E. Alon Thursday, Mar 2 nd, 2017 7:00-8:30pm EECS 151/251A: SRPING 2017 MIDTERM 1 NAME Last First
More information*Instruction Matters: Purdue Academic Course Transformation. Introduction to Digital System Design. Module 4 Arithmetic and Computer Logic Circuits
Purdue IM:PACT* Fall 2018 Edition *Instruction Matters: Purdue Academic Course Transformation Introduction to Digital System Design Module 4 Arithmetic and Computer Logic Circuits Glossary of Common Terms
More informationIntroduction. Purpose. Intended Audience. Conventions. Close
Introduction Introduction Verilog-XL is a simulator that allows you to test the logic of a design. The process of logic simulation in Verilog-XL is as follows: 1. Describe the design to Verilog-XL. 2.
More informationAn easy to read reference is:
1. Synopsis: Timing Analysis and Timing Constraints The objective of this lab is to make you familiar with two critical reports produced by the Xilinx ISE during your design synthesis and implementation.
More informationTwo HDLs used today VHDL. Why VHDL? Introduction to Structured VLSI Design
Two HDLs used today Introduction to Structured VLSI Design VHDL I VHDL and Verilog Syntax and ``appearance'' of the two languages are very different Capabilities and scopes are quite similar Both are industrial
More informationAmrita Vishwa Vidyapeetham. EC429 VLSI System Design Answer Key
Time: Two Hours Amrita Vishwa Vidyapeetham B.Tech Second Assessment March 2013 Eighth Semester Electrical and Electronics Engineering EC429 VLSI System Design Answer Key Answer all Questions Roll No: Maximum:
More informationCO Computer Architecture and Programming Languages CAPL. Lecture 9
CO20-320241 Computer Architecture and Programming Languages CAPL Lecture 9 Dr. Kinga Lipskoch Fall 2017 A Four-bit Number Circle CAPL Fall 2017 2 / 38 Functional Parts of an ALU CAPL Fall 2017 3 / 38 Addition
More informationNH 67, Karur Trichy Highways, Puliyur C.F, Karur District DEPARTMENT OF INFORMATION TECHNOLOGY CS 2202 DIGITAL PRINCIPLES AND SYSTEM DESIGN
NH 67, Karur Trichy Highways, Puliyur C.F, 639 114 Karur District DEPARTMENT OF INFORMATION TECHNOLOGY CS 2202 DIGITAL PRINCIPLES AND SYSTEM DESIGN UNIT 2 COMBINATIONAL LOGIC Combinational circuits Analysis
More informationECE 4514 Digital Design II. Spring Lecture 7: Dataflow Modeling
ECE 4514 Digital Design II Lecture 7: Dataflow Modeling A language Lecture Today's topic Dataflow Modeling input input input module output output Model with submodules and gates = Structural Model with
More informationDon t expect to be able to write and debug your code during the lab session.
EECS150 Spring 2002 Lab 4 Verilog Simulation Mapping UNIVERSITY OF CALIFORNIA AT BERKELEY COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE Lab 4 Verilog Simulation Mapping
More information