Академический Документы
Профессиональный Документы
Культура Документы
Concurrent Statements
Sequential Statements
Signal Assignment
(dataflow model)
A <= B AND C;
DAT <= (D AND E) OR (F AND G);
A <= B AND C;
DAT <= (D AND E) OR (F AND G);
if (condition) then
{ sequence of statements }
elsif (condition) then
{ sequence of statements }
else --(the else is optional)
{ sequence of statements }
end if;
(dataflow model)
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
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
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