Download presentation
Presentation is loading. Please wait.
Published byLoreen Chambers Modified over 9 years ago
1
Digital System Design EEE344 Lecture 2 Introduction to Verilog HDL Prepared by: Engr. Qazi Zia, Assistant Professor EED, COMSATS Attock1
2
Steps of solving digital design problem Timing Verification Logic Synthesis and implementation Logic Simulation Subject your code to simulatorFunctional Errors are checked HDL Description/ Design Entry Divide the tasksWrite Verilog code for each task Problem Statement Define the problem in simple wordsThink and write about what is required Prepared by: Engr. Qazi Zia, Assistant Professor EED, COMSATS Attock2
3
HDLs (hardware descriptive languages) Common HDLs are : Verilog HDL VHDL Some other HDLs AHDL, System C etc
4
4 History of Verilog ® HDL Beginning: 1983 “Gateway Design Automation” company IEEE standardised Simulation environment Comprising various levels of abstraction Switch (transistors), gate, register-transfer, and higher levels
5
5 History of Verilog ® HDL (cont’d) Three factors to success of Verilog Programming Language Interface (PLI) i.e. that allows behavioral code to invoke C functions and C code to invoke Verilog system tasks. Close attention to the needs of ASIC foundries “Gateway Design Automation” partnership with Motorola, National, and UTMC in 1987-89 Verilog-based synthesis technology “Gateway Design Automation” licensed Verilog to Synopsys Synopsys introduced synthesis from Verilog in 1987
6
6 History of Verilog ® HDL (cont’d) VHDL VHSIC (Very High Speed Integrated Circuit) Hardware Description Language Developed under contract from DARPA IEEE standard Public domain Other EDA (electronic design automation) vendors adapted VHDL
7
7 History of Verilog ® HDL (cont’d) Today Market divided between Verilog & VHDL VHDL mostly in Europe Verilog dominant in US VHDL More general language Not all constructs are synthesizable Verilog: Not as general as VHDL Most constructs are synthesizable
8
Verilog HDL Verilog built-in primitives: N-inputN-output, 3-state and buf or not nand bufif0 nor bufif1 xor notif0 xnor notif1
9
How to write Verilog code? Starting statement/keyword module Ending keyword endmodule Complete Verilog code looks like module ( ports list separated by comma,s); end module
10
Example 1 module half_adder (sum, c_out, a,b); input a,b; output c_out, sum; xor (sum,a,b); and (c_out,a,b); endmodule
11
Example 2 When we connect two primitives we use a keyword wire module simple1(y_out,x1,x2,x3,x4,x5); input x1,x2,x3,x4,x5; output y_out; wire y1,y2; and (y1,x1,x2); nand (y2,x3,x4,x5); nor (y_out,y1,y2); endmodule
12
Some language rules Verilog is case-sensitive language The name of a variable may not begin with a digit or $, and may not be longer than 1024 characters. Comments may be embedded in two ways 1) // 2) /* */
13
Top-Down Design and Nested modules Complex design is partitioned into sub-blocks Each sub-block is designed and checked its functionality A separate module is designed that combines all the sub-blocks
14
Example 1 Cin a b Half Adder1 Half Adder 2 OR gate w1=a xor b w2=a.b w1 xor cin sum cout w3 Full Adder
15
Example 2 16bit ripple carry adder 16 bit ripple carry adder a[15:0] b[15:0]cin cout sum[15:0]
16
Example 16bit RCA RCA4RCA2 RCA1 RCA3 cin a[3:0] b[3:0] a[15:12] a[7:4] a[11:8] b[15:12] b[7:4]b[11:8] c3 c2 c1cout sum[3:0]sum[7:4]sum[11:8] sum[15:12]
17
Example 4bit RCA fa4fa2 fa1 fa3 cin a[0] b[0] a[3] a[1] a[2] b[3] b[1]b[2] c3 c2 c1cout sum[0]sum[1]sum[2] sum[3]
18
Full adder Cin a b Half Adder1 Half Adder 2 OR gate w1=a xor b w2=a.b w1 xor cin sum cout w3 Full Adder
19
Example 2bit comparator ABA_lt_BA_gt_BA_eq_B A1 A0B1B0 00 1 011 00101 00111 0100 1 01 1 101 01111 1000 1 1001 1 10 1 111 00 1 1101 1 1110 1 11 1
20
A_lt_B B1B0 A1A0 00011110 00 111 01 11 11 10 1 A1’B1 A1’A0’B0A0’B1B0 A_lt_B= A1’A0’B0 + A0’B1B0 + A1’B1
21
A_gt_B A0B1’B0’ A1A0B0’ A1B1’ A_gt_B = A1B1’ + A1A0B0’ + A0B1’B0’ A_eq_B = A1A0B1B0+ A1’A0’B1’B0’ + A1’A0B1’B0+ A1A0’B1B0’ B1B0 A1A0 00011110 00 01 1 11 1 1 1 10 1 1
22
Example 2bit comparator Boolean equations for 2bit comparator are A_lt_B=~ a1b1 + ~a1~a0b0 + ~a0b1b0 A_gt_B=a1~b1+a0~b1~b0+a1a0~b0 A_eq_B= ~a1~a0~b1~b0+~a1a0~b1b0+ a1a0b1b0+a1~a0b1~b0
23
4bit comparator Four bit comparator can be developed from two 2bit comparators as follow: Four bit comparator has two four bit inputs(A has A3A2A1A0, B has B3B2B1B0 bit positions), and three scalar outputs similar to 2bit comparator. The four bit comparator will consist of two 2bit comparators i.e. first comparator will have A3A2B3B2 inputs and A_gt_B, A_lt_B, A_eq_B outputs, second comparator has inputs A1A0B1B0 and A_gt_B, A_lt_B, A_eq_B outputs. For A_gt_B of 4bit comp: if either A_gt_B of first 2bit comp is one or if A_eq_B of first 2bit comp is one and A_gt_B of second 2bit comp is one, then A_gt_B of 4bit comp is 1. A_gt_B = (A_gt_B of 1 st comp ) or ((A_eq_B of 1 st comp) and (A_gt_B of 2 nd comp))
24
.. Similarly for A_lt_B: A_lt_B = (A_lt_B of 1 st comp ) or ((A_eq_B of 1 st comp) and (A_lt_B of 2 nd comp)) For A_eq_B: A_eq_B= ((A_eq_B of 1 st comp) and (A_eq_B of 2 nd comp))
25
and or b0 b3 b2 b1 a3 a2 a0 a1 Grt Les Eq Grt Les Eq a_gt_b a_eq_b a_Lt_b 4bit comp
26
Four value logic 01XZ01XZ
27
Test Methodology Stimulus generator Unit under test Response Monitor
28
Test bench or stimulus writing steps Module test(); Wire inputs; Reg outputs; UUT a1(ports); Initial begin Variables values $monitor("a=%b b=%b c=%b d=%b w=%b y=%b", variable waveforms); end endmodule
29
End
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.