NON-Synthesizable VHDL/Clock Generator
¸¸ÀÏ PC ¿¡ »ç¿ëµÉ ȸ·ÎÀÇ ÀϺκÐÀ» Ĩ¼ÂÀ¸·Î ¼³°èÇÒ °æ¿ì ½Ã½ºÅÛ ¸ðµ¨ÀÇ ÀϺκÐÀ» ºÐÇÒÇÏ¿© ÇÕ¼º °¡´ÉÇÑ ¼öÁØÀÇ·Î ±â¼úÇϸç ÀÌÀÇ °ËÁõ°úÁ¤¿¡¼ ÀÌÀü ½Ã½ºÅÛ ¼öÁØÀÇ ¸ðµ¨À» Å×½ºÆ® º¥Ä¡·Î¼ »ç¿ëÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù.
½Ã¹Ä·¹ÀÌ¼Ç ¸ðµ¨Àº ¼³°èÀÇ ÃÖÁ¾ °á°ú¿¡ ´ëÇÑ Å¸ÀÌ¹Ö °ü°è¸¸À» ±â¼úÇÑ´Ù. ŸÀÌ¹Ö Æ¯¼ºÀº VHDLÀÇ delay¿¡ ÀÇÇÏ¿© °£´ÜÇÏ°Ô ±â¼úÇÒ¼ö ÀÖ´Ù. ´ÙÀ½Àº ŸÀÌ¹Ö ¸ðµ¨À» AFTER ¿¡ ÀÇÇÏ¿© ½±°Ô ±â¼úÇÒ¼ö ÀÖÀ½À» º¸¿©ÁØ´Ù.
LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY delay IS PORT ( a : OUT std_logic_vector(0 TO 3); en : IN std_logic; clk : OUT std_logic ); END delay; ARCHITECTURE behave OF delay IS SIGNAL clk_out : std_logic := '0'; BEGIN function_genenerator : PROCESS (en) BEGIN IF en='1' THEN a <= "0000", "0001" AFTER 20 ns, "0010" AFTER 40 ns, "0011" AFTER 60 ns, "0100" AFTER 80 ns, "0101" AFTER 100 ns, "0110" AFTER 120 ns, "0111" AFTER 140 ns, "1000" AFTER 160 ns, "1001" AFTER 180 ns, "1010" AFTER 200 ns, "1100" AFTER 220 ns; ELSE a <= "0000"; END IF; END PROCESS; clock_genenerator : PROCESS VARIABLE clk_time : INTEGER := 0; BEGIN WAIT FOR 10 ns; IF clk_out = '0' THEN clk_out <= '1'; ELSE clk_out <= '0'; END IF; END PROCESS; clk <= clk_out; END behave; |
À§ÀÇ ¿¹´Â Clock°ú Function GeneratorÀÌ´Ù.
½Ã¹Ä·¹ÀÌ¼Ç °á°ú´Â,
ÀÌ¿Í°°Àº ¸ðµ¨Àº ÇÕ¼ºµÇÁö ¾Ê´Â´Ù. ÀÌ¹Ì ¸¸µé¾îÁø ¶óÀ̺귯¸®·Î P&R Çϴµ¥ ¾î¶»°Ô ÀÓÀÇÀÇ delay¸¦ °®´Â primitive¸¦ ¼±ÅÃÇÒ ¼ö Àְڴ°¡? À§¿Í °°Àº ¸ðµ¨Àº Å×½ºÆ® º¥Ä¡¿¡ À¯¿ëÇÏ°Ô »ç¿ëÇÒ¼ö ÀÖ´Ù.
mailto:goodkook
CSA & VLSI Design Lab.