From 4614dec29d3e119681d3bdc9304e370716a7ed94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 19 Feb 2019 11:33:29 +0100 Subject: Tue, 19 Feb 2019 11:33:29 +0100 --- VHDL.wiki | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 6 deletions(-) (limited to 'VHDL.wiki') 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 then + ; +elsif then -- notera felstavning + +else + +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'')$ -- cgit v1.2.3