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.