CS 61C L25 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
Digital System Design-II (CSEB312)
Advertisements

Simulation executable (simv)
Verilog Overview. University of Jordan Computer Engineering Department CPE 439: Computer Design Lab.
Synchronous Sequential Logic
Combinational Logic.
ELEN 468 Lecture 21 ELEN 468 Advanced Logic Design Lecture 2 Hardware Modeling.
Table 7.1 Verilog Operators.
Verilog Intro: Part 1.
Hardware Description Language (HDL)
Verilog. 2 Behavioral Description initial:  is executed once at the beginning. always:  is repeated until the end of simulation.
CS61C L22 Representations of Combinatorial Logic Circuits (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
Lecture 2: Hardware Modeling with Verilog HDL
OUTLINE Introduction Basics of the Verilog Language Gate-level modeling Data-flow modeling Behavioral modeling Task and function.
CS61C L21 State Elements: CircuitsThat Remember (1) Garcia © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS61C L21 State Elements : Circuits that Remember (1) Spring 2007 © UCB 161 Exabytes In 2006  In 2006 we created, captured, and replicated 161 exabytes.
CS61C L21 State Elements : Circuits that Remember (1) Garcia, Fall 2006 © UCB One Laptop per Child  The OLPC project has been making news recently with.
Verilog and VeriWell Bo Cheng.
ELEN 468 Lecture 161 ELEN 468 Advanced Logic Design Lecture 16 Synthesis of Language Construct II.
CS 61C L24 Verilog I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures.
CS 61C L20 Introduction to Synchronous Digital Systems (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L21 State Elements: CircuitsThat Remember (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L28 Representations of Combinatorial Logic Circuits (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS 61C L30 Verilog I (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine.
ELEN 468 Advanced Logic Design
Advanced Verilog EECS 270 v10/23/06.
CS 61C L31 Verilog I (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine.
CS61C L14 Introduction to Synchronous Digital Systems (1) Garcia, Fall 2005 © UCB Lecturer PSOE, new dad Dan Garcia inst.eecs.berkeley.edu/~cs61c.
CS61C L15 Synchronous Digital Systems (1) Beamer, Summer 2007 © UCB Scott Beamer, Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture.
Overview Logistics Last lecture Today HW5 due today
Computer Architecture and Design – ECEN 350
Sequential Logic in Verilog
ECE 2372 Modern Digital System Design
CS 152 L02 Verilog & Multiply Review (1)Patterson Fall 2003 © UCB Dave Patterson ( www-inst.eecs.berkeley.edu/~cs152/
ECE 551 Digital System Design & Synthesis Fall 2011 Midterm Exam Overview.
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.
Chapter 11: System Design Methodology Digital System Designs and Practices Using Verilog HDL and 2008, John Wiley11-1 Ders 8: FSM Gerçekleme ve.
1 Workshop Topics - Outline Workshop 1 - Introduction Workshop 2 - module instantiation Workshop 3 - Lexical conventions Workshop 4 - Value Logic System.
ECE/CS 352 Digital System Fundamentals© 2001 C. Kime 1 ECE/CS 352 Digital Systems Fundamentals Spring 2001 Chapters 3 and 4: Verilog – Part 2 Charles R.
1 CSE-308 Digital System Design (DSD) N-W.F.P. University of Engineering & Technology, Peshawar.
1 COMP541 Sequential Circuits Montek Singh Feb 1, 2012.
Anurag Dwivedi. Basic Block - Gates Gates -> Flip Flops.
Behavioral Modelling - 1. Verilog Behavioral Modelling Behavioral Models represent functionality of the digital hardware. It describes how the circuit.
Verilog A Hardware Description Language (HDL ) is a machine readable and human readable language for describing hardware. Verilog and VHDL are HDLs.
M.Mohajjel. Structured Procedures Two basic structured procedure statements always initial All behavioral statements appear only inside these blocks Each.
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
Chapter 11: System Design Methodology Digital System Designs and Practices Using Verilog HDL and 2008, John Wiley11-1 Chapter 11: System Design.
CS61C L24 State Elements : Circuits that Remember (1) Garcia, Fall 2014 © UCB Senior Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c.
OUTLINE Introduction Basics of the Verilog Language Gate-level modeling Data-flow modeling Behavioral modeling Task and function.
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.
SYEN 3330 Digital SystemsJung H. Kim Chapter SYEN 3330 Digital Systems Chapters 4 – Part4: Verilog – Part 2.
EMT 351/4 DIGITAL IC DESIGN Verilog Behavioral Modeling  Finite State Machine -Moore & Mealy Machine -State Encoding Techniques.
Pusat Pengajian Kejuruteraan Mikroelektronik EMT 351/4 DIGITAL IC DESIGN Verilog Behavioural Modeling (Part 4) Week #
1 Lecture 3: Modeling Sequential Logic in Verilog HDL.
Structural Description
Overview Logistics Last lecture Today HW5 due today
Hardware Description Languages: Verilog
An Introduction to Verilog: Transitioning from VHDL
Verilog Tutorial Fall
Flip Flops Lecture 10 CAP
Discussion 2: More to discuss
Hardware Description Languages: Verilog
Introduction to DIGITAL CIRCUITS MODELING & VERIFICATION using VERILOG [Part-I]
332:437 Lecture 8 Verilog and Finite State Machines
Dr. Tassadaq Hussain Introduction to Verilog – Part-3 Expressing Sequential Circuits and FSM.
The Verilog Hardware Description Language
332:437 Lecture 8 Verilog and Finite State Machines
Presentation transcript:

CS 61C L25 Verilog I (1) Garcia, Fall 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 24 – Verilog II Apple’s iPod Photo!!!   The world’s best-selling mp3 player just got a lot better... Now it holds 60 GB of music and photos and data. It has a high-res 220x176 screen and A/V features, like a slideshow mode using your music and A/V out directly to your TV. Prices from $499-$599, TSW. apple.com

CS 61C L25 Verilog I (2) Garcia, Fall 2004 © UCB Review 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 vs. always Verilog easier to deal with when thought of as a hardware modeling tool, not as a prog lang. Want to Monitor when ports, registers updated Verilog can describe everything from single gate to full computer system; you get to design a simple processor

CS 61C L25 Verilog I (3) Garcia, Fall 2004 © UCB Review: Verilog Pedagogic Quandary Using Verilog subset because full Verilog supports advanced concepts that are not described until >= CS 150, and would be confusing to mention now Trying to describe a new language without forcing you to buy a textbook, yet language bigger diff than C vs. Java Hence Wawrzynek Verilog tutorial We’ll go through most of tutorial together Do the tutorials, don’t just Read them

CS 61C L25 Verilog I (4) Garcia, Fall 2004 © UCB Time, variable update, module, & monitor The instant before the rising edge of the clock, all outputs and wires have their OLD values. This includes inputs to flip flops. Therefore, if you change the inputs to a flip flop at a particular rising edge, that change will not be reflected at the output until the NEXT rising edge. This is because when the rising edge occurs, the flip flop still sees the old value. When Verilog is simulating, time changes, then ports (variables), registers updated, modules invoked, monitor or #2(Z, X, Y); Z X Y

CS 61C L25 Verilog I (5) Garcia, Fall 2004 © UCB Example page 6 in Verilog Tutorial // Test bench for 2-input multiplexor. // Tests all input combinations. module testmux2; reg [2:0] c; wire f; reg expected; mux2 myMux (.select(c[2]),.in0(c[0]),.in1(c[1]),.out(f)); initial begin c = 3'b000; expected=1'b0;... Verilog constants syntax N’Bxxx where N is size of constant in bits B is base: b for binary, h for hex, o for octal xxx are the digits of the constant

CS 61C L25 Verilog I (6) Garcia, Fall 2004 © UCB Example page 7 in Verilog Tutorial … begin c = 3'b000; expected=1'b0; repeat(7) begin #10 c = c + 3'b001; if (c[2]) expected=c[1]; else expected=c[0]; end #10 $finish; end Verilog if statement, for and while loops like C repeat (n) loops for n times (restricted for ) forever is an infinite loop Can select a bit of variable ( c[0] ) $finish ends simulation

CS 61C L25 Verilog I (7) Garcia, Fall 2004 © UCB Example page 7 in Verilog Tutorial... end initial begin $display("Test of mux2."); $monitor("[select in1 in0]=%b out=%b expected=%b time=%d",c, f, expected, $time); end endmodule // testmux2 Verilog “printf” statements $display to print text on command $write to print text on command, no new line $strobe prints only at certain times $monitor prints when any variable updated

CS 61C L25 Verilog I (8) Garcia, Fall 2004 © UCB Output for example on page 7 (no delay) Test of mux2. [select in1 in0]=000 out=0 expected=0 time=0 [select in1 in0]=001 out=1 expected=1 time=10 [select in1 in0]=010 out=0 expected=0 time=20 [select in1 in0]=011 out=1 expected=1 time=30 [select in1 in0]=100 out=0 expected=0 time=40 [select in1 in0]=101 out=0 expected=0 time=50 [select in1 in0]=110 out=1 expected=1 time=60 [select in1 in0]=111 out=1 expected=1 time=70 Note: c output is 3 bits (000 … 111) because c declared as 3 bit constant

CS 61C L25 Verilog I (9) Garcia, Fall 2004 © UCB Example page 10 Verilog Tutorial // 4-input multiplexor built from // 3 2-input multiplexors module mux4 (in0, in1, in2, in3, select, out); input in0,in1,in2,in3; input [1:0] select; output out; wire w0,w1; mux2 m0 (.select(select[0]),.in0(in0),.in1(in1),.out(w0)), m1 (.select(select[0]),.in0(in2),.in1(in3),.out(w1)), m2` (.select(select[1]),.in0(w0),.in1(w1),.out(out)); endmodule // mux4 What are m0, m1, m2? What is size of ports?

CS 61C L25 Verilog I (10) Garcia, Fall 2004 © UCB Part of example page 11 Verilog Tutorial... case (select) 2'b00: expected = a; 2'b01: expected = b; 2'b10: expected = c; 2'b11: expected = d; endcase; // case(select)... Verilog case statement different from C Has optional default case when no match to other cases Case very useful in instruction interpretation; case using opcode, each case an instruction

CS 61C L25 Verilog I (11) Garcia, Fall 2004 © UCB Administrivia We have an updated grading standard for The Float Question (TFQ). We offer “free” regrades to anyone who lost points on TFQ. “Free” = If that’s your only regrade, we will NOT review the other questions of your entire exam. Everyone who lost points on TFQ should take advantage of this Just write “FLOAT” on the top-right of the front cover of your exam and return your exam to your TA before 4pm.

CS 61C L25 Verilog I (12) Garcia, Fall 2004 © UCB Rising and Falling Edges and Verilog Challenge of hardware is when do things change relative to clock? Rising clock edge? (“positive edge triggered”) Falling clock edge? (“negative edge triggered”) When reach a logical level? (“level sensitive”) Verilog must support any “clocking methodology” Includes events “posedge”, “negedge” to say when clock edge occur, and “wait” statements for level

CS 61C L25 Verilog I (13) Garcia, Fall 2004 © UCB Example page 12 Verilog Tutorial // Behavioral model of 4-bit Register: // positive edge-triggered, // synchronous active-high reset. module reg4 (CLK,Q,D,RST); input [3:0] D; input CLK, RST; output [3:0] Q; reg [3:0] Q; (posedge CLK) if (RST) Q = 0; else Q = D; endmodule // reg4 On positive clock edge, either reset, or load with new value from D

CS 61C L25 Verilog I (14) Garcia, Fall 2004 © UCB Example page 13 Verilog Tutorial... initial begin CLK = 1'b0; forever #5 CLK = ~CLK; end... No built in clock in Verilog, so specify one Clock CLK above alternates forever in 10 ns period: 5 ns at 0, 5 ns at 1, 5 ns at 0, 5 ns at 1, …

CS 61C L25 Verilog I (15) Garcia, Fall 2004 © UCB Example page 14 Verilog Tutorial module add4 (S,A,B); a combinational logic block that forms the sum ( S ) of the two 4-bit binary numbers ( A and B ) Tutorial doesn’t define this, left to the reader Write the Verilog for this module in a behavioral style now Assume this addition takes 4 ns

CS 61C L25 Verilog I (16) Garcia, Fall 2004 © UCB Example page 14 Verilog Tutorial module add4 (S,A,B); input [3:0] A, B; output [3:0] S; reg S; or B) #4 S = A + B; endmodule a combinational logic block that forms the sum of the two 4-bit binary numbers, taking 4 ns Above is behavioral Verilog

CS 61C L25 Verilog I (17) Garcia, Fall 2004 © UCB Example page 14 Verilog Tutorial // Accumulator module acc (CLK,RST,IN,OUT); input CLK,RST; input [3:0] IN; output [3:0] OUT; wire [3:0] W0; add4 myAdd (.S(W0),.A(IN),.B(OUT)); reg4 myReg (.CLK(CLK),.Q(OUT),.D(W0),.RST(RST)); endmodule // acc This module uses prior modules, using wire to connect output of adder to input of register

CS 61C L25 Verilog I (18) Garcia, Fall 2004 © UCB Example page 14 Verilog Tutorial module accTest; reg [3:0] IN; reg CLK, RST; wire [3:0] OUT; acc myAcc (.CLK(CLK),.RST(RST),.IN(IN),.OUT(OUT)); initial begin CLK = 1'b0; repeat (20) #5 CLK = ~CLK; end... Clock frequency is __ GHz?

CS 61C L25 Verilog I (19) Garcia, Fall 2004 © UCB Example page 14 Verilog Tutorial... initial begin #0 RST=1'b1; IN=4'b0001; #10 RST=1'b0; end initial $monitor("time=%0d: OUT=%1h", $time, OUT); endmodule // accTest What does this initial block do? What is output sequence? How many lines of output?

CS 61C L25 Verilog I (20) Garcia, Fall 2004 © UCB Finite State Machines (FSM) Tutorial example is bit-serial parity checker computes parity of string of bits sequentially, finding the exclusive-or of all the bits Parity of "1" means that the string has an odd number of 1's “Even” state OUT = 0 IN = 0 “Odd” state OUT = 1 IN = 0 IN = 1

CS 61C L25 Verilog I (21) Garcia, Fall 2004 © UCB Example page 16, Verilog Tutorial // Behavioral model of D-type flip-flop: // positive edge-triggered, // synchronous active-high reset. module DFF (CLK,Q,D,RST); input D; input CLK, RST; output Q; reg Q; (posedge CLK) if (RST) #1 Q = 0; else #1 Q = D; endmodule // DFF Loaded on positive edge of clock

CS 61C L25 Verilog I (22) Garcia, Fall 2004 © UCB Example page 3, Part III Verilog Tutorial // Structural model of serial parity checker. module parityChecker (OUT, IN, CLK, RST); output OUT; input IN; input CLK, RST; wire currentState, nextState; DFF state (.CLK(CLK),.Q(currentState),.D(nextState),.RST(RST)); xor (nextState, IN, currentState); buf (OUT, nextState); endmodule // parity Verilog doesn’t like it when you feed outputs back internally…

CS 61C L25 Verilog I (23) Garcia, Fall 2004 © UCB Peer Instruction A. To test FSMs, you need to test every transition from every state B. Modules must be updated with explicit calls to them, ala scheme C. If input not explicitly set, output of CL defaults to ‘0’ ABC 1: FFF 2: FFT 3: FTF 4: FTT 5: TFF 6: TFT 7: TTF 8: TTT

CS 61C L25 Verilog I (24) Garcia, Fall 2004 © UCB In conclusion Verilog describes hardware in hierarchical fashion, either its structure or its behavior or both Time is explicit, unlike C or Java Time must be updated for variable change to take effect monitor print statement like a debugger; display, write, strobe more normal Modules activated simply by updates to variables, not explicit calls as in C or Java