31
An Introduction to Verilog: Transitioning from VHDL Tutorial 1

An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Embed Size (px)

Citation preview

Page 1: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

An Introduction to Verilog: Transitioning from VHDL

Tutorial 1

Page 2: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Lesson Plan (Tentative)

• Week 1: Transitioning from VHDL to Verilog, Introduction to Cryptography

• Week 2: A5 Cipher Implementaion, Transitioning from Verilog to Verilog-A

• Week 3: Verilog-A Mixer Analysis

Page 3: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Purpose of HDL Languages

• Simplify design so you can concentrate on the overall picture

• HDL allows description in language rather than schematic, speeding up development time

• Allows reuse of components (standard cells ie libraries)

Page 4: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

VHDL/Verilog Differences

• Verilog modelled after C, VHDL is modelled after Ada– VHDL is more strongly typed (ie it checks the typing

more rigorously)– Verilog is case sensitive while VHDL is not

• This means that VHDL has a higher learning curve than Verilog, but with proficiency, offers more flexibility.

• Verilog used extensively in the US while VHDL is used internationally

Page 5: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Verilog Types

• wire, wire[msb:lsb] (single/multiple bit wire)

• reg, reg[msb:lsb] (single/multiple bit register)

• integer (integer type, 32 bits)

• time (unsigned 64 bit)

• real (floating point double)

• string

Page 6: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Operators

Arithmetic:

• Binary +, -, *, /, % (mod)

• Unary +, - (sign)

Relational

• Binary <, >, <=, >=

Page 7: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Operators (con’t)

Equivalence Operators

• === (equivalence including x and z), ==, !== (again including x and z), !=

Bit-wise Operators

• ~ (not), & (and), | (or), ^ (xor), ~^, ^~ (xnor)

Page 8: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Operators (con’t)

• Shift Operators <<, >>

• Cocatenation {a, b, c}

• Replication {n{m}} (m n times)

• Conditional

cond_exp ? True_exp : false_exp

Page 9: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Built in gates

• Can be used without having to build

• and, nand, or, nor, xor, xnor (n-input gates), used as:and (out, in1, in2, in3, …)

• buf, bufif1, bufif0, not, notif1, notif0 (transmission gates/tristates)

Page 10: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Entity Instantiation

• No equivalent of architecture keyword in Verilog (all is treated as one architecture)

VHDL: entity myentity isport ( a, b : in std_logic;

c : out std_logic);end myentity;Architecture implementation of myentity

--do stuffend implementation;

Verilog: module myentity (a, b, c); input a, b;output c;wire a, b, c;

//do stuffendmodule

Page 11: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Component Instantiation

• Verilog doesn’t require explicit instantiationVHDL: component DFF

port( d : in std_logic;

q : out std_logic);

end component;

MyDff : DFF

Port map (foo, bar); --implicit

Port map (d => foo, q => bar);--explicit

Verilog: dff u0 (foo, bar); //implicit

dff u0 (.foo(d), .bar(q)); //explicit

Page 12: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Combinational Assignment

• Note that gate level primitives in Verilog can be a function or bitwise symbol

VHDL: a <= b;

a <= b AND c;

a <= b + c;

Verilog: a <= b; //parallel assignment

and(a, b, c); //a is output

a <= b & c; //same as line above

{carry, sum} <= b + c; //carry is //optional

Page 13: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Flow Logic (I): Case

• Differentiation in VHDL for select statements and conditional assignment; none in Verilog

VHDL: With std_logic_vector’(A) selectQ <= “1” when “0”

<= “0” when “1”<= “0” when others;

• VHDL can also use case statements similar to VerilogVerilog: case (A)

0 : Q <= 1; 1 : Q <= 0; default : Q <= 0;

endcase

Page 14: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Flow Logic (II): If/Then/Else

• Equivalence operators similar to C in VerilogVHDL: Q <= ‘1’ when A = ‘1’ else

‘0’ when B = ‘1’ else

‘0’;

Verilog: if (A == 1) begin

Q <= 1;

end else if (B == 1) begin

Q <= 0;

end else begin

Q <= 0;

end

Page 15: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Combinational Processes

VHDL: process (a)

begin

b <= a;

end process;

Verilog: always @ (a)

begin

b <= a;

end

Page 16: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Sequential Logic

• Example: D Flip Flop: (note edge triggering is in always statement in Verilog)

VHDL: process(clk)begin

if rising_edge(clk)q <= d;

end if;End process;

Verilog:always @ (posedge clk)begin

q <= d;end

Page 17: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Test Benches

• Useful for simulation and verification• Keyword “initial begin .. end” starts a

testbench– Remember “always begin .. end”

• #delay is used to delay by delay ‘time units’

• $display(“Random text”) displays Random text

• `timescale sets the ‘time unit’ unit

Page 18: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Test Benches

• $monitor (“Clk %b, Reg %d”, clk, reg) displays clock and register variables as binary and decimal respectively

• #delay $finish runs the testbench for delay ‘time units’

Page 19: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

4-bit Counter Code//Asynchronous Reset 4-bit//Countermodule counter (clk, reset,

enable, count);input clk, reset, enable;wire clk, reset, enable;

output count;reg[3:0] count;

always @ (reset) //change to //posedge clk for sync reset

beginif (reset == 1) begin

count <= 0;end

end

always @ (posedge clk)begin

if (enable == 1) begincount <= count + 1;

endend

endmodule

Page 20: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Testbench for Counter

• Example:`timescale 1ns/1ns

module counter_tb; reg clk, reset, enable;wire [3:0] count;

counter U0 ( .clk (clk), .reset (reset), .enable (enable), .count (count) );

initial beginclk = 0; reset = 0; enable = 0; end

always #5 clk = !clk; //flip clock every 5

ns

initial begin $dumpfile ( "counter.vcd" ); $dumpvars;

end

initial begin$display( "\t\ttime,\tclk,\treset,\tenable,\tcount" ); $monitor( "%d,\t%b,\t%b,\t%b,\t%d" ,$time, clk,reset,enable,count);

end

initial #100 $finish; //ends after 100 ns

endmodule

Page 21: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Introduction to Cryptography

Tutorial 1 Part 2

Page 22: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Cryptography is Everywhere

• Internet (online banking, e-commerce sites)

• Cell phones (GSM and CDMA)

• Other wireless devices (PDAs and laptops with wireless cards)

• RFIDs, sensors

Page 23: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Why Hardware Design is important in Cryptography

• Many cryptographic applications are hardware-based (cell phones, RFID, wireless router technology, electronic key dongles)

• Importance of hardware design knowledge to efficiently implement applications in cryptography

Page 24: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Scenario

O

A B

A wants to communicate with B, however O can listen in on the conversation. How to prevent this?

Page 25: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Types of Cryptographic Ciphers

• A cipher is a way of making messages unreadable

• Two main categories: public key and private/symmetric key

• Public key uses different keys for encryption and decryption (which means not having to exchange keys in person), but is computationally expensive

• Symmetric key uses the same key for encryption and decryption, but is relatively cheap in terms of computation power

Page 26: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Types of Cryptographic Ciphers

• Examples of Public Key Cryptography: RSA, Diffie-Hellman key exchange, ECC (Elliptic Curve Cryptography)

• Examples of Symmetric Key Cryptography: RC4 (used in WEP), A5 (used in GSM), DES and Triple-DES (used in banking applications)

Page 27: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Linear Feedback Shift Registers (LFSRs)

• Used in many stream ciphers (a subset of symmetric key ciphers that outputs 1 bit at a time; they’re quick, but less secure than block ciphers)

• Consists of a chain of D Flip Flops and a set of XORs that feed later bits back into the beginning

Page 28: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Example

Page 29: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Practical Example of a cipher: A5

• Used in GSM communications as an encryption scheme

• Consists of 3 LFSRs combined to produce a single stream of bits

• Details were kept secret; people reverse-engineered the cipher to produce the structure

• There have been many attacks since it was reverse engineered and is now considered broken

Page 30: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Diagram of A5-1

Page 31: An Introduction to Verilog: Transitioning from VHDL Tutorial 1

Summary

• Cryptography is used in many everyday applications

• Hardware knowledge important to implement efficient ciphers

• LFSRs important to implement stream ciphers

• A5-1 (GSM) an application of LFSRs