aboutsummaryrefslogtreecommitdiff
path: root/VHDL.wiki
blob: b9f29f282592bad1b95718a31e51bab35d42317e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
= Contents =
  - [[#VHDL|VHDL]]
    - [[#VHDL#"Kod"|"Kod"]]
    - [[#VHDL#Exempelkrets|Exempelkrets]]
    - [[#VHDL#Datatytper|Datatytper]]
      - [[#VHDL#Datatytper#std_logic|std_logic]]
      - [[#VHDL#Datatytper#std_logic_vector|std_logic_vector]]

= VHDL =

VHDL = VHSIC HDL
VHSIC = Very High Speed Integrated Circuits
HDL = Hardware Description Language

Verilog mer hacker-vänligt
Vanligare i USA

VHDL vanligare i Europa

== "Kod" ==

Gränssnitt mot omvänden
{{{vhdl
entity namen1 is
  -- beskrivningav in och utgångar
end entity namn1;
}}}

Intern implementation.
{{{vhdl
architecture namn2 of namn1 is
  -- beskrivning av interna signaler
begin
  -- beskrvining av funktion
end architecture namn2;
}}}

== Exempelkrets ==

Uttrycket

{{$
\begin{aligned}
\text{låt } x &= a \wedge b \\
           y &= a \vee b \\
\text{i } c &= \neg (x \vee y)
\end{aligned}
}}$

kan i VHDL realiseras som:

{{{vhdl
entity knet is
    port (a, b : in std_logic;
          c: out std_logic);
end entity knet;
  
architecture fisttry of knet is
  signal x, y : std_logic;
begin
  c <= not (x or y);
  x <= a and b;
  y <= a or b;
end architecture fisttry;
}}}
.


== Datatytper ==
Mycket hårt typat, men nästan inga datatyper. Så nästintill allting
måste deffinieras upp själv. Standardbibliotek lägger dock till
allting man behöver.

Konstiga fulhak undanbedes.

Standardbiblioteket importeras enkalst genom
{{{VHDL
library ieee;                     -- Berätta att biblioteket finns.
use ieee.standard_logic_1164.all; -- Importera det vi vill ha (allt)
}}}

=== std_logic ===
"bit" typ (Namnet bit var tydligen redan upptaget).

Kan ha värdena `01uxz-wlh`.

- `U` Uninitialized
- `X` Forceing unkwon (i simulering när flera utgångar försöker driva signalen)
- `0` tvingad låg
- `1` tvingad hög
- `Z` High impedance (högohmig) (Tri state, stäng av komponenent)
- `-` Don't care 

=== std_logic_vector ===
Vektor av bitar.

Storlek skrivs antingen med `to` eller `downto`. Notera att de är
sepparat implementerade, och man ska hålla sig till den ena om man
inte vet vad man gör.

{{{VHDL
std_logic_vector (0 to 2);
std_logic_vector (5 downto 2);
}}}