[[dt-code-sequ]]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
dt-code-sequ [2011/07/14 15:56]
beckmanf Asynchroner Reset eingefügt
dt-code-sequ [2014/01/08 10:58]
beckmanf flipflop process -> concurrent
Line 16: Line 16:
   in_i     : ​       in std_ulogic; ​   in_i     : ​       in std_ulogic; ​
   out_o    :        out std_ulogic);​   out_o    :        out std_ulogic);​
-end;+end entity flipflop;
  
 architecture rtl of fliplfop is architecture rtl of fliplfop is
Line 33: Line 33:
 out_o <= q;  out_o <= q; 
  
-end; +end architecture rtl;  
 +</​code>​ 
 + 
 +Ein Flipflop kann alternativ mit einem concurrent statement beschrieben werden. ​  
 + 
 +<code vhdl> 
 +entity flipflop is  
 +  port( 
 +  clk      :        in std_ulogic;​ 
 +  reset_n ​ :        in std_ulogic;​ 
 +  in_i     : ​       in std_ulogic;  
 +  out_o    :        out std_ulogic);​ 
 +end entity flipflop; 
 + 
 +architecture rtl of fliplfop is 
 +  signal q : std_ulogic;​ 
 +begin 
 + 
 +q <= '​0'​ when reset_n = '​0'​ else in_i when rising_edge(clk);​  
 + 
 +out_o <= q
  
 +end architecture rtl; 
 </​code>​ </​code>​
   ​   ​
 == Flipflop, dessen Zustand in jedem Takt invertiert wird == == Flipflop, dessen Zustand in jedem Takt invertiert wird ==
  
-In diese Bespiel wird der Ausgang des Flipflops mit einem Inverter an den Eingang zurückgeführt. ​+In diesem ​Bespiel wird der Ausgang des Flipflops mit einem Inverter an den Eingang zurückgeführt. ​
  
 <code vhdl> <code vhdl>
Line 62: Line 83:
  
 </​code>​ </​code>​
 +
 +== Beispiel: Seltsamer Zähler ==
 +
 +Was macht die Schaltung in diesem folgenden Beispiel? Versuchen Sie zunächst die Funktion aus dem VHDL Code zu erarbeiten.
 +
 +
 +<code vhdl>
 +library ieee;
 +use ieee.std_logic_1164.all;​
 +
 +-- Strange Counter
 +
 +entity strangecnt is 
 +  port (
 +    clk                     : in std_ulogic;
 +    rst_n                   : in std_ulogic;
 +    s_i                     : in std_ulogic;
 +    cnt0_o ​                 : out std_ulogic;
 +    cnt1_o ​                 : out std_ulogic);​
 +end; 
 +
 +architecture rtl of strangecnt is
 +  signal c0, c0_new : std_ulogic;
 +  signal c1, c1_new : std_ulogic;
 +  signal l : std_ulogic;
 +begin
 +  ​
 +  c0 <= '​0'​ when rst_n = '​0'​ else c0_new when rising_edge(clk); ​
 +  c1 <= '​0'​ when rst_n = '​0'​ else c1_new when rising_edge(clk);​
 +
 +  c0_new <= not c0;
 +  l <= c0 xor c1;
 +  cnt0_o <= c0;
 +  cnt1_o <= c1 xor c0; 
 +  c1_new <= l when s_i = '​1'​ else not l;
 +
 +end architecture rtl; 
 +</​code>​
 +
 +a) Zeichnen Sie die Schaltung! Handelt es sich um einen Moore oder Mealy Automaten?
 +
 +b) Zeichnen Sie den Graphen!
 +
 +c) Zeichnen Sie ein Timingdiagramm! ​
 +
 +
 +Dieses Codebeispiel ist funktional ein steuerbarer Zähler. Wenn s_i=0 ist, dann zählt der Zähler vorwärts, ansonsten rückwärts. Nur ist hier eine ungewöhnliche Zustandskodierung gewählt, die dann aber zusammen mit der Ausgangslogik den Zähler ergibt.  ​
  
  
  • dt-code-sequ.txt
  • Last modified: 2014/01/08 11:02
  • by beckmanf