• No results found

Digitaltekniska byggblock

N/A
N/A
Protected

Academic year: 2021

Share "Digitaltekniska byggblock"

Copied!
4
0
0

Loading.... (view fulltext now)

Full text

(1)

Digitaltekniska byggblock

Mattias Krysander

9 oktober 2018

(2)

Dokumentet listar användbara digitaltekniska typer av byggblock. För varje block visas symbol och vhdl-kod. Variabeldefintioner för std_logic-variabler har utelämnats. Blocken anpassas vid användning till uppgiftens specifika behov genom att t ex välja antalet bitar i en räknare, vilka funktioner räknaren ska ha etc.

2-1 Multiplexer

data_in(0) data_in(1)

data_out

address 0 1

signal data_in : std_logic_vector(1 downto 0);

data_out <= data_in(0) when address = ’0’

else data_in(1);

4-1 Multiplexer

data_in(0) data_in(1)

data_out

address 0 1 data_in(2) data_in(3)

2 3

signal data_in : std_logic_vector(3 downto 0);

signal address : unsigned(1 downto 0);

with address select

data_out <= data_in(0) when "00", data_in(1) when "01", data_in(2) when "10", data_in(3) when "11",

’-’ when others;

Komparator

= is_equal

x1 x0

4

4 signal x0 : unsigned(3 downto 0);

signal x1 : unsigned(3 downto 0);

is_equal <= ’1’ when x1 = x0 else ’0’;

ROM

x0 1

x1 2

0 0 0 1 1 1 1 0 0 1 2 3

d0 d1

use ieee.numeric_std.all;

type ROM is array(0 to 3) of std_logic_vector(1 downto 0);

constant ROM_content : ROM := (0 => "00", 1 => "01", 2 => "11", 3 => "10");

signal data : std_logic_vector(1 downto 0);

signal address : std_logic_vector(1 downto 0);

address <= x1 & x0;

data <= ROM_content(to_integer(unsigned(address)));

d0 <= data(0);

d1 <= data(1);

1

(3)

D-vippa

D-vippa med asynkron clear.

D Q

clk

q_plus q

clr Clear

process(clk,clr) begin

if clr = ’1’ then q <= ’0’;

elsif rising_edge (clk) then q <= q_plus;

end if;

end process;

Synkronisering och enpulsning

D Q

clk

x x_sync1

D Q

clk

x_sync2

& x_EP enable

process(clk) begin

if rising_edge(clk) then x_sync1 <= x;

x_sync2 <= x_sync1;

end if;

end process;

x_EP <= x_sync1 and (not x_sync2) and enable;

T-vippa

T Q

clk

toggle q process(clk) begin

if rising_edge(clk) then if (toggle = ’1’) then

q <= not(q);

end if;

end if;

end process;

SR-vippa

S

R Q clk

set

reset

q process(clk) begin

if rising_edge(clk) then if (set = ’1’) then

q <= ’1’;

elsif (reset = ’1’) then q <= ’0’;

end if;

end if;

end process;

2

(4)

Skiftregister

right_in load

shift_enable

q(3) LOAD SE shift_left

left_in

L/ ¯R

q(2) q(1) q(0) data_in

4 bitars skiftregister

clk

signal q : std_logic_vector(3 downto 0);

signal data_in : std_logic_vector(3 downto 0);

process(clk) begin

if rising_edge(clk) then if (load = ’1’) then

q <= data_in;

elsif (shift_enable = ’1’) then if (shift_left = ’1’) then

q <= q(2 downto 0) & right_in;

else

q <= left_in & q(3 downto 1);

end if;

end if;

end if;

end process;

Räknare

Ett exempel på en 4-bitsräknare med asynkron clear, count enable och rippel carry out.

ce

4-bitsräknare clk

clr

4

CE CLR

counter

RCO rco

use ieee.numeric_std.all;

signal counter : unsigned(3 downto 0);

process(clk,clr) begin if clr = ’1’ then

counter <= "0000";

elsif rising_edge(clk) then if (ce = ’1’) then

counter <= counter + 1;

end if;

end if;

end process;

rco <= ’1’ when ((ce = ’1’) and (counter = 15)) else ’0’;

3

References

Related documents

Sambanden redovisas i den ordningen som de presenteras inom i

Detta skulle säkerställa att tjänsterna och systemen inom den förvaltningsgemensamma digitala infrastrukturen är tillgängliga för rätt person vid rätt tillfälle.. Det

En stokastisk variabel ξ ¨ar normalf¨ordelad med parametrarna µ och σ &gt; 0 om den har t¨atheten (se fig. Bj¨orup &amp; Ed´en: Analys i en och flera dimensioner s.. En

Ber¨akna v¨antev¨ardet och variansen f¨or summan av tio oberoende stokastiska variabler, som alla ¨ar likformigt f¨ordelade i intervallet (1,

Det går att läsa utsignalens värde i komponenten Används på båda sidorna i tilldelning:. buffer_port &lt;= a

Bengt Oelmann -- copyright 2002 11 Genom att använda variabler blir koden sekventiell där ordningen på. satserna

En stokastisk variabel eller slumpvariabel ¨ar ett tal vars v¨arde styrs av slumpen (en funktion Ω →

Till en telefonväxel ankommer i genomsnitt 90 anrop per timme. Vi antar att ankomster är Poissonfördelade. Bestäm sannolikheten att exakt 2 anrop kommer under ett tidsintervall som