{"id":292660,"date":"2019-07-28T15:00:10","date_gmt":"2019-07-28T15:00:10","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=292660"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=292660","title":{"rendered":"\u0421\u043b\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 VHDL?"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u0421\u043b\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 VHDL? \u0422\u0440\u0443\u0434\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0442\u0443\u0442 \u2014 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f\u2026<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/z2\/bv\/hn\/z2bvhnb6ur4cnx35lh3rh-fj-ra.png\"><\/p>\n<p>  \u041c\u043e\u0436\u0435\u0442, \u043c\u043d\u0435 \u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442\u0442\u044f\u043d\u0443\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u043e \u0441\u043e\u0441\u0435\u0434 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430.<\/p>\n<p>  \u0418 \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0432 0.1 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b\u2026<\/p>\n<p>  \u0418 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0443\u043f\u0430\u043b \u043d\u0430 \u043f\u043b\u0430\u0442\u043a\u0443 \u0441 CPLD (\u0440\u0443\u0431\u043b\u0435\u0439 \u0437\u0430 200, \u0432\u0440\u043e\u0434\u0435) \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b\u0438 \u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0438 \u043a\u043d\u043e\u043f\u043a\u0438. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0430\u043a\u043e\u0439 \u0448\u0442\u0443\u043a\u043e\u0439, \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f \u0438 <a name=\"habracut\"><\/a><\/p>\n<p>  \u0412\u044b\u0431\u043e\u0440 \u043d\u0430 \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c VHDL \u0438\u043b\u0438 Verilog \u043d\u0435 \u0441\u0442\u043e\u044f\u043b \u2014 \u0445\u043e\u0442\u044f \u0438 \u043f\u0438\u0448\u0443 \u0432\u0441\u0435 \u043d\u0430 \u0421, \u043d\u043e \u043b\u044e\u0431\u043b\u044e \u0432\u0441\u0435 \u0436\u0435 Ada \u2014 \u0442\u0430\u043a \u0447\u0442\u043e VHDL \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435, \u043f\u043e\u0447\u0438\u0442\u0430\u0432 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 FPGA, \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 (\u043d\u0443 \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438).<\/p>\n<p>  \u0418\u0442\u0430\u043a, <s>\u0432\u043d\u0430\u0447\u0430\u043b\u0435 \u0431\u044b\u043b\u043e \u0441\u043b\u043e\u0432\u043e<\/s> \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u0435\u0431\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. \u0427\u0430\u0441\u0442\u043e\u0442\u0430 \u0440\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u043e\u043a\u0430 50 \u041c\u0433\u0446, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0438\u0437\u0432\u0435\u0434\u0435\u043c \u0435\u0433\u043e \u0434\u043e 10, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0438\u043d\u0438\u0438 \u0442\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435 \u0438 \u043a\u043e\u043d\u0446\u0435. \u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.  <\/p>\n<pre><code class=\"vhdl\">-- 100 ns signal generator process(clk) \tvariable t:integer range 0 to 5 := 0; begin  if rising_edge(clk) then \tt := t + 1;   \tif t = 5 then \t  t := 0; \t  tact &lt;= not tact; \tend if;   \tif t = 2 then \t  tact &lt;= not tact; \tend if;  end if; end process; <\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u043a-\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u0423 \u043d\u0430\u0441 \u0434\u0432\u0435 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u044b \u2014 \u0434\u043b\u0438\u043d\u0430 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0438 \u0434\u043b\u0438\u043d\u0430 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u043e\u0442\u0432\u0435\u0434\u0435\u043c 3 \u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0441\u0442\u0430 (\u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0434\u0435\u0441\u044f\u0442\u044b\u0445), \u0438 \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u2014 3.<\/p>\n<pre><code class=\"vhdl\">shared  variable period : integer range 0 to 1000 := 500; shared  variable duty : integer range 0 to 1000 := 250;  shared variable dig1:std_logic_vector(3 downto 0):=\"0000\"; shared variable dig2:std_logic_vector(3 downto 0):=\"0101\"; shared variable dig3:std_logic_vector(3 downto 0):=\"0010\";  shared variable di1:std_logic_vector(3 downto 0):=\"0000\"; shared variable di2:std_logic_vector(3 downto 0):=\"0000\"; shared variable di3:std_logic_vector(3 downto 0):=\"0101\"; <\/code><\/pre>\n<p>  \u041d\u0443 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043e\u0439\u0434\u0443\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u044b \u043e\u0442 \u043a\u043d\u043e\u043f\u043e\u043a, \u0447\u0442\u043e \u0432\u0438\u0434\u043d\u044b \u0432\u043d\u0438\u0437\u0443 \u043f\u043b\u0430\u0442\u044b \u2014 \u0438\u0445 \u0432\u0441\u0435\u0433\u043e 4,<br \/>  \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0443\u0441\u0442\u044c \u0434\u0432\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0438 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0434\u043d\u0430 \u0437\u0430\u0434\u0430\u0435\u0442 \u0437\u043d\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0430 \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u2026<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0412\u043e\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"vhdl\">process(key1) begin  if rising_edge(key1) then   ready &lt;= not ready;  end if; end process;  process(key3) begin  if rising_edge(key3) then  if key4 = '1' then    inc_duty;  else    dec_duty;  end if;  end if; end process;  process(key2) begin  if rising_edge(key2) then  if key4 = '1' then    inc_period;  else    dec_period;  end if;  end if; end process; <\/code><\/pre>\n<p>  \u0412 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u044b inc\/dec, \u0432\u043e\u0442 \u043e\u043d\u0438  <\/p>\n<pre><code class=\"vhdl\">procedure inc_duty is begin    if duty &lt; period then     duty := duty + 1; \t if dig1 = \"1001\" then \t   dig1 := \"0000\"; \t\tif dig2 = \"1001\" then         dig2 := \"0000\"; \t\t  if dig3 = \"1001\" then \t\t    dig3 := \"0000\"; \t\t  else \t\t    dig3 := dig3 + 1; \t\t  end if; \t\telse \t\t  dig2 := dig2 + 1; \t\tend if; \t else       dig1 := dig1 + 1; \t end if; \tend if; end procedure;  procedure dec_duty is begin    if duty &gt; 1 then     duty := duty - 1; \t if dig1 = \"0000\" then \t   dig1 := \"1001\"; \t\tif dig2 = \"0000\" then \t\t  dig2 := \"1001\"; \t\t  dig3 := dig3 - 1; \t\telse \t\t dig2 := dig2 - 1; \t\tend if; \t else  \t   dig1 := dig1 - 1; \t end if; \tend if; end procedure;  procedure inc_period is begin    if period &lt; 1000 then     period := period + 1; \t if di1 = \"1001\" then \t   di1 := \"0000\"; \t\tif di2 = \"1001\" then         di2 := \"0000\"; \t\t  if di3 = \"1001\" then \t\t    di3 := \"0000\"; \t\t  else \t\t    di3 := di3 + 1; \t\t  end if; \t\telse \t\t  di2 := di2 + 1; \t\tend if; \t else       di1 := di1 + 1; \t end if; \tend if; end procedure;  procedure dec_period is begin    if period &gt; 1 then     period := period - 1; \t if di1 = \"0000\" then \t   di1 := \"1001\"; \t\tif di2 = \"0000\" then \t\t  di2 := \"1001\"; \t\t  if di3 = \"0000\" then \t\t    di3 := \"1001\"; \t\t  else \t\t    di3 := di3 - 1; \t\t  end if; \t\telse \t\t di2 := di2 - 1; \t\tend if; \t else  \t   di1 := di1 - 1; \t end if; \tend if; end procedure; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u043b\u0438\u043d\u043d\u043e \u0438 \u0441\u043b\u043e\u0436\u043d\u043e (\u043f\u043e\u0442\u043e\u043c\u0443 \u0438 \u0441\u0432\u0435\u0440\u043d\u0443\u0442\u043e), \u043d\u043e \u0432\u043f\u043e\u043b\u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e.<\/p>\n<p>  \u041d\u0443 \u0438 \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u2014 \u0443 \u043d\u0430\u0441 \u0441\u0435\u043c\u0438\u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043d\u044b\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440, \u0438 \u0438\u0445 6 \u0448\u0442\u0443\u043a (\u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e 8). \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u043c\u0443\u0447\u0438\u0442\u0441\u044f \u0441 \u0442\u043e\u0447\u043a\u043e\u0439, \u0432 \u0434\u0435\u0441\u044f\u0442\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<p>  \u041f\u0443\u0441\u0442\u044c \u043e\u043d\u0438 \u043f\u043e \u0446\u0438\u043a\u043b\u0443 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0446\u0438\u0444\u0440\u0430:  <\/p>\n<pre><code class=\"vhdl\">process(tactX) begin    case tactX is      when\"000\"=&gt; en_xhdl&lt;=\"11111110\";      when\"001\"=&gt; en_xhdl&lt;=\"11111101\";      when\"010\"=&gt; en_xhdl&lt;=\"11111011\";      when\"011\"=&gt; en_xhdl&lt;=\"11110111\";      when\"100\"=&gt; en_xhdl&lt;=\"11101111\";      when\"101\"=&gt; en_xhdl&lt;=\"11011111\";      when\"110\"=&gt; en_xhdl&lt;=\"10111111\";      when\"111\"=&gt; en_xhdl&lt;=\"01111111\";      when others =&gt; en_xhdl&lt;=\"01111111\";    end case; end process;  process(en_xhdl) begin  case en_xhdl is    when \"11111110\"=&gt; data4&lt;=dig1;    when \"11111101\"=&gt; data4&lt;=dig2;    when \"11111011\"=&gt; data4&lt;=dig3;    when \"11110111\"=&gt; data4&lt;=\"1111\";    when \"11101111\"=&gt; data4&lt;=di1;    when \"11011111\"=&gt; data4&lt;=di2;    when \"10111111\"=&gt; data4&lt;=di3;    when \"01111111\"=&gt; data4&lt;=\"0000\";    when others    =&gt; data4&lt;=\"1111\";   end case; end process;  process(data4) begin   case data4 is    WHEN \"0000\" =&gt;                   dataout_xhdl1 &lt;= \"11000000\";          WHEN \"0001\" =&gt;                   dataout_xhdl1 &lt;= \"11111001\";          WHEN \"0010\" =&gt;                   dataout_xhdl1 &lt;= \"10100100\";          WHEN \"0011\" =&gt;                   dataout_xhdl1 &lt;= \"10110000\";          WHEN \"0100\" =&gt;                   dataout_xhdl1 &lt;= \"10011001\";          WHEN \"0101\" =&gt;                   dataout_xhdl1 &lt;= \"10010010\";          WHEN \"0110\" =&gt;                   dataout_xhdl1 &lt;= \"10000010\";          WHEN \"0111\" =&gt;                   dataout_xhdl1 &lt;= \"11111000\";          WHEN \"1000\" =&gt;                   dataout_xhdl1 &lt;= \"10000000\";          WHEN \"1001\" =&gt;                   dataout_xhdl1 &lt;= \"10010000\";          WHEN OTHERS =&gt;                dataout_xhdl1 &lt;= \"11111111\";       END CASE;    END PROCESS; <\/code><\/pre>\n<p>  \u041f\u0440\u0438\u0437\u043d\u0430\u044e\u0441\u044c \u0447\u0435\u0441\u0442\u043d\u043e \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0443\u0442\u0430\u0449\u0438\u043b \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432, \u0447\u0442\u043e \u0448\u043b\u0438 \u0441 \u043f\u043b\u0430\u0442\u043a\u043e\u0439 \u2014 \u0443\u0436 \u043e\u0447\u0435\u043d\u044c \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0438 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e! en_xhdl \u2014 \u044d\u0442\u043e\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0431\u0443\u0434\u0435\u0442 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432 \u0442\u0430\u043a\u0442\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f, dataout_xhdl1 \u2014 \u044d\u0442\u043e\u0442 \u0441\u0438\u0433\u043d\u0430\u043b \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u0432\u0435\u0442\u043e\u0434\u0438\u043e\u0434\u044b, \u043d\u0443 \u0430 data4 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0446\u0438\u0444\u0440\u0443.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0435\u0440\u0434\u0446\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0441\u0435 \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u2014 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440. \u0422\u0443\u0442 tactX \u2014 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0430 cnt \u2014 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0435. \u041d\u0443 \u0438 lin \u2014 \u0441\u0438\u0433\u043d\u0430\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430.  <\/p>\n<pre><code class=\"vhdl\">process(tact)  variable cntX : integer range 0 to 1000 := 0;  variable cnt : integer range 0 to 1000 := 0;  begin   if rising_edge(tact) then    if cntX = 0 then \t tactX &lt;= tactX + 1; \tend if; \t \tcntX := cntX + 1; \t \tif cnt &gt; period then \t cnt := 0; \telse \t cnt := cnt + 1; \tend if;  \tif cnt = 0 then \t  lin &lt;= '0'; \telsif cnt = duty then \t  lin &lt;= '1'; \tend if;   \tend if; end process; <\/code><\/pre>\n<p>  \u041d\u0443 \u0432\u043e\u0442, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u2014 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u0441\u044f \u0432 \u0431\u043b\u043e\u043a\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"vhdl\">  cat_led &lt;= dataout_xhdl1;   en_led &lt;= en_xhdl;   led1 &lt;= not ready;   out1 &lt;= lin when ready = '1' else '0';   out2 &lt;= not lin when ready = '1' else '0'; <\/code><\/pre>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u043b\u0435\u043f\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b Quarus Prime \u0431\u043b\u0430\u0433\u043e\u0441\u043a\u043b\u043e\u043d\u043d\u043e \u043f\u0440\u0438\u043d\u044f\u043b, \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u043b, \u0441\u043e\u043e\u0431\u0449\u0438\u043b, \u0447\u0442\u043e  <\/p>\n<pre><code class=\"markdown\">Top-level Entity Name\tv12 Family\tMAX II Device\tEPM240T100C5 Timing Models\tFinal Total logic elements\t229 \/ 240 ( 95 % ) Total pins\t29 \/ 80 ( 36 % ) Total virtual pins\t0 UFM blocks\t0 \/ 1 ( 0 % ) <\/code><\/pre>\n<p>  \u041e\u0441\u0442\u0430\u043b\u0441\u044f \u0441\u0430\u043c\u044b\u0439 \u043d\u0443\u0434\u043d\u044b\u0439 \u044d\u0442\u0430\u043f, \u0445\u043e\u0442\u044f \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u2014 \u043d\u0430\u0437\u043d\u0430\u0447\u0438\u0442\u044c \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u0438\u043d\u044b. \u0418 \u0432\u0441\u0435 \u2014 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435 \u0432 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c! \u0427\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435 \u0436\u0435 \u0443\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u0432 229 \u044f\u0447\u0435\u0435\u043a, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0435\u0449\u0435 \u0430\u0436 11 \u0448\u0442\u0443\u043a \u2014 \u043d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435 \u0441\u043e\u0436\u0440\u0430\u043b \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u2014 \u043a\u043d\u043e\u043f\u043a\u0438 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0443\u043b\u043e\u0436\u0435\u043d \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f\u0447\u0435\u0435\u043a \u2014 \u0443 \u0438\u043d\u0442\u0435\u043b\u0430 \u0435\u0441\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0433\u0434\u0435 \u043e\u043d\u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442, \u043a\u0430\u043a \u0443\u043b\u043e\u0436\u0438\u0442\u044c \u0432 1 LUT \u2014 \u043d\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0431\u0435\u0437 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u2026<\/p>\n<p>  \u0422\u0430\u043a \u0447\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u044f \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u2014 \u043d\u0435\u0442, \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u0437\u043d\u0430\u0435\u0448\u044c \u0421 \u0438\u043b\u0438 \u0410\u0434\u0430 \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0446\u0438\u0444\u0440\u043e\u0432\u0430\u044f \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u0438\u043a\u0430, \u0438 \u0434\u0430, \u0441\u043b\u043e\u0436\u043d\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0432\u0435\u0449\u0430\u0445\u2026 \u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0437\u0430\u043d\u044f\u043b \u0434\u0435\u043d\u044c, \u0438 \u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043c\u0430\u0441\u0441\u0443 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u044f \u043a\u0430\u043a \u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0442\u0430\u043a \u0438 \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430! \u0418 \u0441\u043e\u0441\u0435\u0434 \u0434\u043e\u0432\u043e\u043b\u0435\u043d \ud83d\ude42<\/p><\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/461621\/\"> https:\/\/habr.com\/ru\/post\/461621\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\u0421\u043b\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043d\u0430 VHDL? \u0422\u0440\u0443\u0434\u043d\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043d\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0442\u0443\u0442 \u2014 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f\u2026<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/z2\/bv\/hn\/z2bvhnb6ur4cnx35lh3rh-fj-ra.png\"><\/p>\n<p>  \u041c\u043e\u0436\u0435\u0442, \u043c\u043d\u0435 \u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442\u0442\u044f\u043d\u0443\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442, \u043d\u043e \u0441\u043e\u0441\u0435\u0434 \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u043b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u044b\u0445 \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u043e\u0439 \u0438 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043c\u043f\u0443\u043b\u044c\u0441\u0430.<\/p>\n<p>  \u0418 \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u0432 0.1 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434\u044b\u2026<\/p>\n<p>  \u0418 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0443\u043f\u0430\u043b \u043d\u0430 \u043f\u043b\u0430\u0442\u043a\u0443 \u0441 CPLD (\u0440\u0443\u0431\u043b\u0435\u0439 \u0437\u0430 200, \u0432\u0440\u043e\u0434\u0435) \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u044b\u043b\u0438 \u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u044b \u0438 \u043a\u043d\u043e\u043f\u043a\u0438. \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0442\u0430\u043a\u043e\u0439 \u0448\u0442\u0443\u043a\u043e\u0439, \u043f\u043e\u0434\u0443\u043c\u0430\u043b \u044f \u0438 <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-292660","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=292660"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/292660\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=292660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=292660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=292660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}