Thanks to visit codestin.com
Credit goes to www.scribd.com

100% found this document useful (2 votes)
2K views2 pages

VHDL Cheat Sheet

The document provides a cheat sheet on VHDL concepts including concurrent and sequential statements, signal assignment, conditional and selective signal assignment, processes, if/case statements, and examples of VHDL models for common logic circuits like a multiplexer, decoder, register and counter.

Uploaded by

Cory Mayer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
2K views2 pages

VHDL Cheat Sheet

The document provides a cheat sheet on VHDL concepts including concurrent and sequential statements, signal assignment, conditional and selective signal assignment, processes, if/case statements, and examples of VHDL models for common logic circuits like a multiplexer, decoder, register and counter.

Uploaded by

Cory Mayer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

VHDL Cheat-Sheet

Copyright: 2009 Bryan Mealy

Concurrent Statements

Sequential Statements

Concurrent Signal Assignment

Signal Assignment

(dataflow model)

target <= expression;

target <= expression;

A <= B AND C;
DAT <= (D AND E) OR (F AND G);

A <= B AND C;
DAT <= (D AND E) OR (F AND G);

Conditional Signal Assignment

if (condition) then
{ sequence of statements }
elsif (condition) then
{ sequence of statements }
else --(the else is optional)
{ sequence of statements }
end if;

target <= expressn when condition else


expressn when condition else
expressn;

F3 <= 1 when (L=0 AND M=0)


1 when (L=1 AND M=1)
0;

(dataflow model)

with chooser_expression select


target <= expression when choices,
expression when choices;

11,
10,
01,
00,
others;

Process
(behavioral model)

opt_label: process(sensitivity_list)
begin
{sequential_statements}
end process opt_label;
proc1: process(A,B,C)
begin
if (A = 1 and B = 0) then
F_OUT <= 1;
elsif (B = 1 and C = 1) then
F_OUT <= 1;
else
F_OUT <= 0;
end if;
end process proc1;

if
(SEL =
elsif (SEL =
elsif (SEL =
elsif (SEL =
else F_CTRL
end if;

else
else

Selective Signal Assignment

with SEL select


MX_OUT <= D3 when
D2 when
D1 when
D0 when
0 when

if statements

(dataflow model)

111) then
110) then
101) then
000) then
<= 0;

F_CTRL
F_CTRL
F_CTRL
F_CTRL

<=
<=
<=
<=

case statements
case (expression) is
when choices =>
{sequential statements}
when choices =>
{sequential statements}
when others => -- (optional)
{sequential statements}
end case;
case ABC is
when 100 =>
when 011 =>
when 111 =>
when others =>
end case;

F_OUT
F_OUT
F_OUT
F_OUT

<=
<=
<=
<=

1;
1;
1;
0;

D(7);
D(6);
D(1);
D(0);

Description
Typical logic
circuit

CKT Diagram

VHDL Model
entity my_ckt is
Port ( A,B,C,D : in std_logic;
F : out std_logic);
end my_ckt;
architecture ckt1 of my_ckt is
begin
F <= (A AND B) OR (C AND (NOT D));
end ckt1;

4:1 Multiplexor

architecture ckt2 of my_ckt is


begin
F <= 1 when (A = 1 AND B = 1)
1 when (C = 1 AND D = 0)
0;
end ckt2;
entity MUX_4T1 is
Port ( SEL : in std_logic_vector(1
D_IN : in std_logic_vector(3
F : out std_logic);
end MUX_4T1;
architecture my_mux of MUX_4T1 is
begin
F <= D_IN(0) when (SEL = "00")
D_IN(1) when (SEL = "01")
D_IN(2) when (SEL = "10")
D_IN(3) when (SEL = "11")
'0';
end my_mux;

2:4 Decoder

downto 0);
downto 0);

else
else
else
else

entity DECODER is
Port ( SEL : in std_logic_vector(1 downto 0);
F : out std_logic_vector(3 downto 0));
end DECODER;
architecture my_dec
begin
with SEL select
F <= "0001" when
"0010" when
"0100" when
"1000" when
"0000" when
end my_dec;

8-bit register
with load enable

else
else

of DECODER is

"00",
"01",
"10",
"11",
others;

entity REG is
port ( LD,CLK : in std_logic;
D_IN : in std_logic_vector (7 downto 0);
D_OUT : out std_logic_vector (7 downto 0));
end REG;
architecture my_reg of REG is
begin
process (CLK,LD)
begin
if (LD = '1' and rising_edge(CLK)) then
D_OUT <= D_IN;
end if;
end process;
end my_reg;

8-bit up/down
counter with
asynchronous
reset

entity COUNT_8B is
port ( RESET,CLK,LD,UP : in std_logic;
DIN : in std_logic_vector (7 downto 0);
COUNT : out std_logic_vector (7 downto 0));
end COUNT_8B;
architecture my_count of COUNT_8B is
signal t_cnt : std_logic_vector(7
begin
process (CLK, RESET)
begin
if (RESET = '1') then
t_cnt <= (others => 0); -elsif (rising_edge(CLK)) then
if (LD = '1') then
t_cnt
else
if (UP = '1') then t_cnt
else
t_cnt
end if;
end if;
end if;
end process;
COUNT <= t_cnt;
end my_count;

downto 0);

clear
<= DIN;

-- load

<= t_cnt + 1; -- incr


<= t_cnt - 1; -- decr

You might also like