aboutsummaryrefslogtreecommitdiff
path: root/VHDL.wiki
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-02-19 11:33:29 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-02-19 11:33:29 +0100
commit4614dec29d3e119681d3bdc9304e370716a7ed94 (patch)
treeb684eff8e29ee84c23417429c6a9e440edb32173 /VHDL.wiki
parentTue, 19 Feb 2019 11:08:23 +0100 (diff)
downloadwiki-public-4614dec29d3e119681d3bdc9304e370716a7ed94.tar.gz
wiki-public-4614dec29d3e119681d3bdc9304e370716a7ed94.tar.xz
Tue, 19 Feb 2019 11:33:29 +0100
Diffstat (limited to 'VHDL.wiki')
-rw-r--r--VHDL.wiki56
1 files changed, 50 insertions, 6 deletions
diff --git a/VHDL.wiki b/VHDL.wiki
index 13f48d7..216b9e4 100644
--- a/VHDL.wiki
+++ b/VHDL.wiki
@@ -7,9 +7,10 @@
- [[#VHDL#Datatytper#std_logic_vector|std_logic_vector]]
- [[#VHDL#Typer av satser|Typer av satser]]
- [[#VHDL#Typer av satser#process|process]]
- - [[#VHDL#Annat trevligt|Annat trevligt]]
- - [[#VHDL#Annat trevligt#with-select-when|with-select-when]]
- - [[#VHDL#Annat trevligt#when-else|when-else]]
+ - [[#VHDL#Typer av satser#process#if-then-else|if-then-else]]
+ - [[#VHDL#Typer av satser#with-select-when|with-select-when]]
+ - [[#VHDL#Typer av satser#when-else|when-else]]
+ - [[#VHDL#Operatorer|Operatorer]]
= VHDL =
@@ -21,6 +22,10 @@ Verilog mer hacker-vänligt, vanligare i USA
VHDL vanligare i Europa
+Mycket av de här anteckningarna basserar sig på ISY's föreläsning om
+grunderna i VHDL.
+[[http://www.isy.liu.se/edu/kurs/TSEA22/forelasning/bilder10.pdf|Bilder kanske finns här]]
+
== Generell struktur ==
Gränssnitt mot omvärlden
@@ -115,7 +120,41 @@ Allting i VHDL är paralellt by default, dock finns:
`process` låter ett block köra i sekventiell ordning. Dock kör alla
`process`-block paralellt gämte varandra.
-== Annat trevligt ==
+{{{VHDL
+entity de is
+ port ( d, clk : in STD_LOGIC;
+ q : out STD_LOGIC);
+end de;
+
+architecture d_vippa of de is
+begin
+ process(clk) -- processen körs när när någon av signalerna i
+ -- "känslighetslistan" ändras. I det här fallet clk.
+ begin
+ if rising_edge(clk) then -- Kolla efter positiv flak.
+ q <= d;
+ end if;
+ -- q ligger kvar om inget annat anges.
+ end process;
+ -- först här har q sitt nya värde.
+end d_vippa;
+}}}
+
+==== if-then-else ====
+I [[#process|process-satser]] kan if-satser finnas.
+
+{{{VHDL
+if <expr 1> then
+ <statement 1>;
+elsif <expr 2> then -- notera felstavning
+ <statement 2>
+else
+ <statement n>
+end if
+}}}
+
+=== with-select-when ===
+För det här stycket, samt [[#when-else]] används följande `entity`:
{{{VHDL
entity mux is
@@ -125,10 +164,10 @@ entity mux is
end entity mux;
}}}
-=== with-select-when ===
-
Är begränsad till att högerledet måste vara ett "simpelt" uttryck.
+Är en mux.
+
{{{VHDL
architecture behavior1 of mux is
begin
@@ -145,6 +184,8 @@ Tillåter "krångliga" uttryck i högerledet.
Första sanna villkoret bestämmer. Allting körs parallellt?
+Är en generaliserad mux.
+
{{{VHDL
architecture behavior2 of mux is
begin
@@ -154,3 +195,6 @@ begin
d(3);
end architecture behavior2;
}}}
+
+== Operatorer ==
+- `&` :: konkattenerirng, $(`0' \& `1' = ``01'')$