From 049b9ad243ac6df93c6a88cb704b03b9a2f6bea7 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Thu, 19 Aug 2021 11:37:28 +0200 Subject: [PATCH] Added IF example for avoiding latch. --- .../lofar2/doc/prestudy/vhdl_explained.txt | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/applications/lofar2/doc/prestudy/vhdl_explained.txt b/applications/lofar2/doc/prestudy/vhdl_explained.txt index d8175f7f62..9140f745e4 100644 --- a/applications/lofar2/doc/prestudy/vhdl_explained.txt +++ b/applications/lofar2/doc/prestudy/vhdl_explained.txt @@ -10,7 +10,25 @@ IF x = 3 THEN y <= x; END IF; -Maakt dat y een latch wordt. Je moet een ELSE y <= 0 END IF; toevoegen, of beginnen met een default assignment y <= 0; en dan de IF - END IF; +Maakt dat y een latch wordt. Je moet een ELSE y <= 0 END IF; toevoegen, of beginnen met een default assignment y <= 0; en dan de IF - END IF; Dus: + +a <= 0 +IF b THEN + a<= 1 +END IF + +is hetzelfde als: + +IF b THEN + a<= 1 +ELSE + a <= 0 +END IF + +Mijn voorkeur is meestal om de eerste manier te gebruiken, omdat je dan daar al de default assignments doet. + +In process met IF of ELSIF rising_edge() moet juist geen ELSE, omdat je daar juist wel wilt dat er een flipflop gegenereerd zal worden. De synthesis compiler snapt dat. +Een latch en een flipflop zin beide single bit geheugens, maar we moeten alleen flipflops maken. 3) Complete sensitivity list -- GitLab