Design of Arithmetic circuits

Size: px
Start display at page:

Download "Design of Arithmetic circuits"

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 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 information

Digital Design with FPGAs. By Neeraj Kulkarni

Digital 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 information

Digital Circuit Design and Language. Datapath Design. Chang, Ik Joon Kyunghee University

Digital 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 information

Binary Adders. Ripple-Carry Adder

Binary 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 information

FPGA Matrix Multiplier

FPGA 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 information

Design Problem 5 Solution

Design 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 information

PROJECT REPORT - UART

PROJECT 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 information

FPGA Design Challenge :Techkriti 14 Digital Design using Verilog Part 1

FPGA 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 information

Digital Integrated Circuits

Digital 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 information

Virtex-II Architecture

Virtex-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 information

Topics. Midterm Finish Chapter 7

Topics. 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 information

Digital Logic & Computer Design CS Professor Dan Moldovan Spring 2010

Digital 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 information

CAD for VLSI Design - I. Lecture 21 V. Kamakoti and Shankar Balachandran

CAD 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 information

Verilog Module 1 Introduction and Combinational Logic

Verilog 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 information

Verilog Sequential Logic. Verilog for Synthesis Rev C (module 3 and 4)

Verilog 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 information

FPGA: FIELD PROGRAMMABLE GATE ARRAY Verilog: a hardware description language. Reference: [1]

FPGA: 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 information

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences

MASSACHUSETTS 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 information

ECE 4514 Digital Design II. Spring Lecture 20: Timing Analysis and Timed Simulation

ECE 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 information

TSEA44 - Design for FPGAs

TSEA44 - 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)

:  : (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 information

ECE Digital System Design & Synthesis Exercise 1 - Logic Values, Data Types & Operators - With Answers

ECE 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 information

Chapter 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 <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 information

A Verilog Primer. An Overview of Verilog for Digital Design and Simulation

A 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 information

Topics. Midterm Finish Chapter 7

Topics. 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 information

Synthesis of Language Constructs. 5/10/04 & 5/13/04 Hardware Description Languages and Synthesis

Synthesis 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 information

Xilinx ASMBL Architecture

Xilinx 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 information

TOPIC : Verilog Synthesis examples. Module 4.3 : Verilog synthesis

TOPIC : 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 information

VERILOG HDL. 1 ENGN3213: Digital Systems and Microprocessors L#5-6

VERILOG 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 information

Lecture 3: Modeling in VHDL. EE 3610 Digital Systems

Lecture 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 information

Design Problem 4 Solution

Design 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 information

EECS150 - Digital Design Lecture 5 - Verilog Logic Synthesis

EECS150 - 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 information

RUN-TIME RECONFIGURABLE IMPLEMENTATION OF DSP ALGORITHMS USING DISTRIBUTED ARITHMETIC. Zoltan Baruch

RUN-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 information

VERILOG 2: LANGUAGE BASICS

VERILOG 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 information

Writing Circuit Descriptions 8

Writing 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 information

Verilog. What is Verilog? VHDL vs. Verilog. Hardware description language: Two major languages. Many EDA tools support HDL-based design

Verilog. 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 information

In 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 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 information

University 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 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 information

Field Programmable Gate Array (FPGA)

Field 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 information

HIGH-PERFORMANCE RECONFIGURABLE FIR FILTER USING PIPELINE TECHNIQUE

HIGH-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 information

INTRODUCTION TO FPGA ARCHITECTURE

INTRODUCTION 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 information

ECE 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 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 information

ECE 545 Lecture 12. FPGA Resources. George Mason University

ECE 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 information

Introduction 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 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 information

COPYRIGHTED MATERIAL. Architecting Speed. Chapter 1. Sophisticated tool optimizations are often not good enough to meet most design

COPYRIGHTED 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 information

16 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. 16 BIT IMPLEMENTATION OF ASYNCHRONOUS TWOS COMPLEMENT ARRAY MULTIPLIER USING MODIFIED BAUGH-WOOLEY ALGORITHM AND ARCHITECTURE. AditiPandey* Electronics & Communication,University Institute of Technology,

More information

MULTIPLE OPERAND ADDITION. Multioperand Addition

MULTIPLE 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 information

Spring 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 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 information

Outline. Introduction to Structured VLSI Design. Signed and Unsigned Integers. 8 bit Signed/Unsigned Integers

Outline. 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 information

CSE 591: Advanced Hardware Design and Verification (2012 Spring) LAB #0

CSE 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 information

Register Transfer Level in Verilog: Part I

Register 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 information

Speaker: Kayting Adviser: Prof. An-Yeu Wu Date: 2009/11/23

Speaker: 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 information

Register Transfer Level

Register 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 information

Introduction 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 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 information

PAGE 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 information

EE178 Spring 2018 Lecture Module 4. Eric Crabill

EE178 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 information

a, b sum module add32 sum vector bus sum[31:0] sum[0] sum[31]. sum[7:0] sum sum overflow module add32_carry assign

a, 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 information

3 Designing Digital Systems with Algorithmic State Machine Charts

3 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 information

Microcomputers. Outline. Number Systems and Digital Logic Review

Microcomputers. 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 information

Graphics: Alexandra Nolte, Gesine Marwedel, Universität Dortmund. RTL Synthesis

Graphics: 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 information

Introduction to Verilog/System Verilog

Introduction 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 information

Chapter 5 Registers & Counters

Chapter 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 information

Prachi Sharma 1, Rama Laxmi 2, Arun Kumar Mishra 3 1 Student, 2,3 Assistant Professor, EC Department, Bhabha College of Engineering

Prachi 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 information

Spiral 1 / Unit 4 Verilog HDL. Digital Circuit Design Steps. Digital Circuit Design OVERVIEW. Mark Redekopp. Description. Verification.

Spiral 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 information

Verilog for High Performance

Verilog 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 information

Hardware Description Languages (HDLs) Verilog

Hardware 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 information

Combinational Logic II

Combinational 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 information

EEL 4783: HDL in Digital System Design

EEL 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 information

Lecture 7. Standard ICs FPGA (Field Programmable Gate Array) VHDL (Very-high-speed integrated circuits. Hardware Description Language)

Lecture 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 information

Tailoring the 32-Bit ALU to MIPS

Tailoring 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 information

ECEN 468 Advanced Logic Design

ECEN 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 information

EN164: Design of Computing Systems Lecture 06: Lab Foundations / Verilog 2

EN164: 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 information

Hardware 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 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 information

Nikhil Gupta. FPGA Challenge Takneek 2012

Nikhil 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 information

UNIVERSITY 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 ~.. 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 information

Chapter 3: Dataflow Modeling

Chapter 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 information

ECE 645: Lecture 1. Basic Adders and Counters. Implementation of Adders in FPGAs

ECE 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 information

C 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 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 information

ECE 341 Midterm Exam

ECE 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 information

Review 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 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 information

Format. 10 multiple choice 8 points each. 1 short answer 20 points. Same basic principals as the midterm

Format. 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 information

Verilog Tutorial. Introduction. T. A.: Hsueh-Yi Lin. 2008/3/12 VLSI Digital Signal Processing 2

Verilog 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 information

ALTERA M9K EMBEDDED MEMORY BLOCKS

ALTERA 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 information

Table of Contents TABLE OF CONTENTS...2

Table 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 information

Digital Design (VIMIAA01) Introduction to the Verilog HDL

Digital 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 information

Synthesis of Combinational and Sequential Circuits with Verilog

Synthesis 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 information

Laboratory Exercise 7

Laboratory 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 information

PESIT Bangalore South Campus

PESIT 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 information

Course Topics - Outline

Course 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 information

Pipelined Quadratic Equation based Novel Multiplication Method for Cryptographic Applications

Pipelined 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 information

CSE140L: Components and Design

CSE140L: 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 information

EECS 151/251A: SRPING 2017 MIDTERM 1

EECS 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

*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 information

Introduction. Purpose. Intended Audience. Conventions. Close

Introduction. 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 information

An easy to read reference is:

An 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 information

Two HDLs used today VHDL. Why VHDL? Introduction to Structured VLSI Design

Two 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 information

Amrita Vishwa Vidyapeetham. EC429 VLSI System Design Answer Key

Amrita 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 information

CO Computer Architecture and Programming Languages CAPL. Lecture 9

CO 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 information

NH 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, 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 information

ECE 4514 Digital Design II. Spring Lecture 7: Dataflow Modeling

ECE 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 information

Don t expect to be able to write and debug your code during the lab session.

Don 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