{"id":884,"date":"2015-11-09T08:26:51","date_gmt":"2015-11-09T08:26:51","guid":{"rendered":"http:\/\/coolt.ch\/notizen\/?p=884"},"modified":"2015-11-09T11:50:45","modified_gmt":"2015-11-09T11:50:45","slug":"vhdl-speicher-buffer-register","status":"publish","type":"post","link":"https:\/\/coolt.ch\/notizen\/vhdl-speicher-buffer-register\/","title":{"rendered":"VHDL speicher, buffer, register"},"content":{"rendered":"<p>Inputdaten m\u00fcssen teilweise abgelegt werden. Wie wird dies in VHDL umgesetzt?<\/p>\n<ul>\n<li>man kann per IP RAM anschliessen und dort per Adresse die Daten hineinschreiben.<\/li>\n<li>Das VHDL-eigene Speicherprinzip sind jedoch die Flip- Flops. Alle Daten die <strong>gespeichert<\/strong> werden sollen, werden in (Vektoren) von <strong>Flip-Flops<\/strong> abgelegt<a href=\"http:\/\/coolt.ch\/notizen\/wp-content\/uploads\/2015\/11\/ff_speicher.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-917\" src=\"http:\/\/coolt.ch\/notizen\/wp-content\/uploads\/2015\/11\/ff_speicher.png\" alt=\"ff_speicher\" width=\"300\" height=\"200\" \/><\/a><br \/>\n<strong>Signale f\u00fchren Wert in und aus dem Flip-Flop<\/strong><\/p>\n<pre class=\"lang:sh decode:true\">-- input\r\nsignal s_next_value: std_logic_vector(7 downto 0);\r\n-- gespeichert\r\nsignal s_current_value: std_logic_vector(7downto0);<\/pre>\n<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">-- input in ff-signal ablegen\r\ns_next_value &lt;= input;\r\n\r\n-- input speichern\r\ninput_register: process (all)\r\nbegin\r\n.    if (reset = '1') then\r\n.        s_current_value &lt;= (others =&gt; '0');\r\n.    elsif (clk'event) and (clk = '1') then\r\n.        -- ausgang ff  erh\u00e4lt  eingang ff\r\n.        s_current_value &lt;= s_next_value; \r\n.  end if; \r\nend process;<\/pre>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/coolt.ch\/notizen\/wp-content\/uploads\/2015\/11\/speicher_mit_enable.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-920\" src=\"http:\/\/coolt.ch\/notizen\/wp-content\/uploads\/2015\/11\/speicher_mit_enable.png\" alt=\"speicher_mit_enable\" width=\"416\" height=\"263\" srcset=\"https:\/\/coolt.ch\/notizen\/wp-content\/uploads\/2015\/11\/speicher_mit_enable.png 416w, https:\/\/coolt.ch\/notizen\/wp-content\/uploads\/2015\/11\/speicher_mit_enable-300x190.png 300w\" sizes=\"(max-width: 416px) 100vw, 416px\" \/><\/a><\/p>\n<p>Normalerweise wird das Inputsignal nicht asynchron an den Eingang des Flip-Flops gelegt. Oft entscheidet ein <strong>enable_signal<\/strong>, wann die Daten vor den Eingang gelegt werden sollen. (Dies geschieht mit einem Multiplexer.)<\/p>\n<pre class=\"lang:sh decode:true \">-- input speichern\r\ninput_register: process (all)\r\nbegin\r\n.    if (reset = '1') then\r\n.        s_current_value &lt;= (others =&gt; '0');\r\n.    elsif (clk'event) and (clk = '1') then\r\n.        -- ausgang ff  erh\u00e4lt  eingang ff\r\n.        s_current_value &lt;= s_next_value; \r\n\r\n.        if (s_enable = '1') then\r\n           s_next_value &lt;= input;\r\n        else\r\n           s_nex_value &lt;= s_current_value;\r\n        end if;\r\n.  end if; \r\nend process;<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Inputdaten m\u00fcssen teilweise abgelegt werden. Wie wird dies in VHDL umgesetzt? man kann per IP RAM anschliessen und dort per Adresse die Daten hineinschreiben. Das VHDL-eigene Speicherprinzip sind jedoch die Flip- Flops. Alle Daten die gespeichert werden sollen, werden in (Vektoren) von Flip-Flops abgelegt Signale f\u00fchren Wert in und aus dem Flip-Flop &#8212; input signal &hellip; <a href=\"https:\/\/coolt.ch\/notizen\/vhdl-speicher-buffer-register\/\" class=\"more-link\"><span class=\"screen-reader-text\">VHDL speicher, buffer, register<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[59],"tags":[18,32,17],"_links":{"self":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/884"}],"collection":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/comments?post=884"}],"version-history":[{"count":8,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/884\/revisions"}],"predecessor-version":[{"id":922,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/884\/revisions\/922"}],"wp:attachment":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/media?parent=884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/categories?post=884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/tags?post=884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}