diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-19 11:33:29 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2019-02-19 11:33:29 +0100 |
commit | 4614dec29d3e119681d3bdc9304e370716a7ed94 (patch) | |
tree | b684eff8e29ee84c23417429c6a9e440edb32173 | |
parent | Tue, 19 Feb 2019 11:08:23 +0100 (diff) | |
download | wiki-public-4614dec29d3e119681d3bdc9304e370716a7ed94.tar.gz wiki-public-4614dec29d3e119681d3bdc9304e370716a7ed94.tar.xz |
Tue, 19 Feb 2019 11:33:29 +0100
Diffstat (limited to '')
-rw-r--r-- | VHDL.wiki | 56 |
1 files changed, 50 insertions, 6 deletions
@@ -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'')$ |