CS 61C L24 Verilog I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia www.cs.berkeley.edu/~ddgarcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures.

Slides:



Advertisements
Similar presentations
Verilog Fundamentals Shubham Singh Junior Undergrad. Electrical Engineering.
Advertisements

ENEL111 Digital Electronics
Verilog.
Simulation executable (simv)
The Verilog Hardware Description Language
Verilog Overview. University of Jordan Computer Engineering Department CPE 439: Computer Design Lab.
ELEN 468 Lecture 21 ELEN 468 Advanced Logic Design Lecture 2 Hardware Modeling.
Chapter 11 Verilog HDL Application-Specific Integrated Circuits Michael John Sebastian Smith Addison Wesley, 1997.
Verilog Intro: Part 1.
Hardware Description Language (HDL)
16/04/20151 Hardware Descriptive Languages these notes are taken from Mano’s book It can represent: Truth Table Boolean Expression Diagrams of gates and.
Anurag Dwivedi.  Verilog- Hardware Description Language  Modules  Combinational circuits  assign statement  Control statements  Sequential circuits.
SYEN 3330 Digital SystemsJung H. Kim Chapter SYEN 3330 Digital Systems Chapters 4 – Part3: Verilog – Part 1.
1 Brief Introduction to Verilog Weiping Shi. 2 What is Verilog? It is a hardware description language Originally designed to model and verify a design.
CSE 341 Verilog HDL An Introduction. Hardware Specification Languages Verilog  Similar syntax to C  Commonly used in  Industry (USA & Japan) VHDL 
 HDLs – Verilog and Very High Speed Integrated Circuit (VHSIC) HDL  „ Widely used in logic design  „ Describe hardware  „ Document logic functions.
CS 151 Digital Systems Design Lecture 37 Register Transfer Level
1 Lecture 1: Verilog HDL Introduction. 2 What is Verilog HDL? Verilog Hardware Description Language(HDL)? –A high-level computer language can model, represent.
CS 61C L25 Verilog I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures.
1 Hardware description languages: introduction intellectual property (IP) introduction to VHDL and Verilog entities and architectural bodies behavioral,
The Multicycle Processor II CPSC 321 Andreas Klappenecker.
ENEE 408C Lab Capstone Project: Digital System Design Verilog Tutorial Class Web Site:
ECE 353 Computer Systems Lab I Verilog Hardware Description Language.
Silicon Programming--Intro. to HDLs1 Hardware description languages: introduction intellectual property (IP) introduction to VHDL and Verilog entities.
CSE241 R1 Verilog.1Kahng & Cichy, UCSD ©2003 CSE241 VLSI Digital Circuits Winter 2003 Recitation 1: Verilog Introduction.
CS 61C L30 Verilog I (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine.
Hardware Description Language HDL. 2 Hardware Description Language HDL  Describes circuits and systems in text. −As a software program.  Can be processed.
ECEN ECEN475 Introduction to VLSI System Design Verilog HDL.
B. RAMAMURTHY Hardware Description Language 8/2/
Overview Logistics Last lecture Today HW5 due today
Computer Architecture and Design – ECEN 350
ECE 2372 Modern Digital System Design
Introduction Verilog is a HARDWARE DESCRIPTION LANGUAGE (HDL) A hardware description language is a language or means used to describe or model a digital.
CS 152 L02 Verilog & Multiply Review (1)Patterson Fall 2003 © UCB Dave Patterson ( www-inst.eecs.berkeley.edu/~cs152/
CS 3850 Lecture 3 The Verilog Language. 3.1 Lexical Conventions The lexical conventions are close to the programming language C++. Comments are designated.
CS 61C L4.2.2 Verilog II (1) K. Meinz, Summer 2004 © UCB CS61C : Machine Structures Lecture Verilog II Kurt Meinz inst.eecs.berkeley.edu/~cs61c.
Digital System 數位系統 Verilog HDL Ping-Liang Lai (賴秉樑)  
Module 1.2 Introduction to Verilog
1 CSE-308 Digital System Design (DSD) N-W.F.P. University of Engineering & Technology, Peshawar.
Fall 2004EE 3563 Digital Systems Design EE 3563 VHSIC Hardware Description Language  Required Reading: –These Slides –VHDL Tutorial  Very High Speed.
Anurag Dwivedi. Basic Block - Gates Gates -> Flip Flops.
Electrical and Computer Engineering University of Cyprus LAB 1: VHDL.
Introduction to VLSI Design – Lec01. Chapter 1 Introduction to VLSI Design Lecture # 11 High Desecration Language- Based Design.
1 Hardware description languages: introduction intellectual property (IP) introduction to VHDL and Verilog entities and architectural bodies behavioral,
Verilog A Hardware Description Language (HDL ) is a machine readable and human readable language for describing hardware. Verilog and VHDL are HDLs.
CSCE 211: Digital Logic Design Chin-Tser Huang University of South Carolina.
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
Introduction to ASIC flow and Verilog HDL
04/26/20031 ECE 551: Digital System Design & Synthesis Lecture Set : Introduction to VHDL 12.2: VHDL versus Verilog (Separate File)
Introduction to Verilog
COE 202 Introduction to Verilog Computer Engineering Department College of Computer Sciences and Engineering King Fahd University of Petroleum and Minerals.
Verilog Intro: Part 1. Hardware Description Languages A Hardware Description Language (HDL) is a language used to describe a digital system, for example,
1 University of Jordan Computer Engineering Department CPE 439: Computer Design Lab.
1 Lecture 1: Verilog HDL Introduction. 2 What is Verilog HDL? Verilog Hardware Description Language(HDL)? –A high-level computer language can model, represent.
Exp#5 & 6 Introduction to Verilog COE203 Digital Logic Laboratory Dr. Ahmad Almulhem KFUPM Spring 2009.
1 A hardware description language is a computer language that is used to describe hardware. Two HDLs are widely used Verilog HDL VHDL (Very High Speed.
Introduction to Verilog COE 202 Digital Logic Design Dr. Muhamed Mudawar King Fahd University of Petroleum and Minerals.
Hardware Description Languages: Verilog
An Introduction to Verilog: Transitioning from VHDL
Hardware Description Language
Reg and Wire:.
Discussion 2: More to discuss
Hardware Description Languages: Verilog
Introduction to Verilog
Levels in computer design
332:437 Lecture 8 Verilog and Finite State Machines
Supplement on Verilog adder examples
The Verilog Hardware Description Language
332:437 Lecture 8 Verilog and Finite State Machines
COE 202 Introduction to Verilog
Presentation transcript:

CS 61C L24 Verilog I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 24 – Verilog I We shut out AZ 38-0!!   Football team continues to roll! The #7 Bears shut out Arizona in a rout. McArthur had 6 catches for 94 yards, breaking the school record for career yards with 2,768. Rodgers threw three first-half touchdowns, J. J. Arrington topped 100 yards for 6 th consec. game. At #23 ASU (3-1,6-1) Sat. calbears.com

CS 61C L24 Verilog I (2) Garcia, Fall 2004 © UCB Verilog Overview (1/3) A Hardware Description Language (HDL) for describing & testing logic circuits. text based way to talk about designs easier to simulate before silicon translate into silicon directly No sequential execution, normally hardware just “runs” continuously. Verilog: A strange version of C, with some changes to account for time VHDL is alternative; similar and can pick it up easily. Verilog simpler to learn!

CS 61C L24 Verilog I (3) Garcia, Fall 2004 © UCB Verilog Overview (2/3) Verilog description composed of modules: module Name ( port list ) ; Declarations and Statements; endmodule Modules can have instantiations of other modules, or use primitives supplied by language Note that Verilog varies from C syntax, borrowing from Ada programming language at times ( endmodule)

CS 61C L24 Verilog I (4) Garcia, Fall 2004 © UCB Verilog Overview (3/3) Verilog has 2 basic modes 1. Structural composition: describes that structure of the hardware components, including how ports of modules are connected together module contents are builtin gates ( and, or, xor, not, nand, nor, xnor, buf ) or other modules previously declared 2. Behavoral: describes what should be done in a module module contents are C-like assignment statements, loops

CS 61C L24 Verilog I (5) Garcia, Fall 2004 © UCB Example: Structural XOR (xor built-in,but..) module xor(X, Y, Z); input X, Y; output Z; wire notX, notY, XnotY, YnotX; not (notX, X), (notY, Y); and (YnotX, notX, Y), (XnotY, X, notY); or (Z, YnotX, XnotY); endmodule X Y X Y Z XnotY YnotX notX notY which “ports” input, output “ports” connect components Note: order of gates doesn’t matter, since structure determines relationship Default is 1 bit wide data

CS 61C L24 Verilog I (6) Garcia, Fall 2004 © UCB Example: Behavoral XOR in Verilog module xorB(X, Y, Z); input X, Y; output Z; reg Z; (X or Y) Z = X ^ Y; endmodule Unusual parts of above Verilog “ (X or Y) ” => whenever X or Y changes, do the following statement “ reg ” is only type of behavoral data that can be changed in assignment, so must redeclare Z Default is single bit data types: X, Y, Z

CS 61C L24 Verilog I (7) Garcia, Fall 2004 © UCB Verilog: replication, hierarchy Often in hardware need many copies of an item, connected together in a regular way Need way to name each copy Need way to specify how many copies Specify a module with 4 XORs using existing module example

CS 61C L24 Verilog I (8) Garcia, Fall 2004 © UCB Example: Replicated XOR in Verilog module 4xor(A, B, C); input[3:0] A, B; output[3:0] C; xorB My4XOR[3:0] (.X(A),.Y(B),.Z(C) ); endmodule Note 1: can associate ports explicitly by name, (.X (A),.Y(B),.Z(C) ) or implicitly by order (as in C) (A, B, C) Note 2: must give a name to new instance of xors ( My4XOR ) C[0] A[0] B[0] A[0] B[0] C[1] A[1] B[1] A[1] B[1] C[2] A[2] B[2] A[2] B[2] C[3] A[3] B[3] A[3] B[3]

CS 61C L24 Verilog I (9) Garcia, Fall 2004 © UCB Verilog big idea: Time Difference from normal prog. lang. is that time is part of the language part of what trying to describe is when things occur, or how long things will take In both structural and behavoral Verilog, determine time with #n : event will take place in n time units structural: not #2(notX, X) says notX does not change until time advances 2 ns behavoral: Z = #2 A ^ B; says Z does not change until time advances 2 ns Default unit is nanoseconds; can change

CS 61C L24 Verilog I (10) Garcia, Fall 2004 © UCB Example: “Initial” means do this code once Note: Verilog uses begin … end vs. { … } as in C #2 stream = 1 means wait 2 ns before changing stream to 1 Output called a “waveform” module test(stream); output stream; reg stream; inital begin stream = 0; #2 stream = 1; #5 stream = 0; #3 stream = 1; #4 stream = 0; end endmodule stream 0 1 time

CS 61C L24 Verilog I (11) Garcia, Fall 2004 © UCB Testing in Verilog Code above just defined a new module Need separate code to test the module (just like C/Java) Since hardware is hard to build, major emphasis on testing in HDL Testing modules called “test benches” in Verilog; like a bench in a lab dedicated to testing Can use time to say how things change

CS 61C L24 Verilog I (12) Garcia, Fall 2004 © UCB Testing Verilog Create a test module that instantiates xor: module testxor; reg x, y, expected; wire z; xor myxor(.x(x),.y(y),.z(z)); /* add testing code */ endmodule Syntax: declare registers, instantiate module.

CS 61C L24 Verilog I (13) Garcia, Fall 2004 © UCB Testing continued Now we write code to try different inputs by assigning to registers: … initial begin x=0; y=0; expected=0; #10 y=1; expected=1; #10 x=1; y=0; #10 y=1; expected=0; end

CS 61C L24 Verilog I (14) Garcia, Fall 2004 © UCB Testing continued Pound sign syntax ( #10 ) indicates code should wait simulated time (10 nanoseconds in this case). Values of registers can be changed with assignment statements. So far we have the xor module and a testxor module that iterates over all the inputs. How do we see if it is correct?

CS 61C L24 Verilog I (15) Garcia, Fall 2004 © UCB Testing continued Use $monitor to watch some signals and see every time they change: … initial $monitor( “x=%b, y=%b, z=%b, exp=%b, time=%d”, x, y, z, expected, $time); Our code now iterates over all inputs and for each one: prints out the inputs, the gate output, and the expected output. $time is system function gives current time

CS 61C L24 Verilog I (16) Garcia, Fall 2004 © UCB Output x=0, y=0, z=0, exp=0, time=0 x=0, y=1, z=1, exp=1, time=10 x=1, y=0, z=1, exp=1, time=20 x=1, y=1, z=0, exp=0, time=30 Expected value matches actual value, so Verilog works

CS 61C L24 Verilog I (17) Garcia, Fall 2004 © UCB Peer Instruction How many mistakes in this module? module test(X); output X; initial begin X = 0; X = 1; end end

CS 61C L24 Verilog I (18) Garcia, Fall 2004 © UCB Peer Instruction Answer How many mistakes in this module? module test(X); output X; reg X; // To change initial begin X = 0; #2 X = 1; // delay! end endmodule // Ada naming

CS 61C L24 Verilog I (19) Garcia, Fall 2004 © UCB In conclusion Verilog allows both structural and behavioral descriptions, helpful in testing Syntax a mixture of C (operators, for, while, if, print) and Ada (begin… end, case…endcase, module …endmodule) Some special features only in Hardware Description Languages # time delay, initial, monitor Verilog can describe everything from single gate to full computer system; you get to design a simple processor