~KPbIC~ 0 27 февраля, 2008 Опубликовано 27 февраля, 2008 · Жалоба Пытаюсь сделать такой в ISE6... под XC9500 Правильно ли так его описывать: entity cc8mm is port ( C : in std_logic; DI : in std_logic_vector (7 downto 0); L : in std_logic; LE : in std_logic; OE : in std_logic; CLR : in std_logic; P : out std_logic); end cc8mm; architecture count_down of cc8mm is Signal TempC : std_logic_vector ( 7 downto 0):= "00000000"; Signal TC : std_logic_vector ( 7 downto 0):= "00000000"; begin process(CLR,C,DI,L) begin if LE='1' then TempC <= DI; TC <= TempC; elsif L = '1' then TC <= TempC; elsif CLR='1' then TC <= "00000001"; elsif C'event and C='1' and OE='0' then TC <= TC -1; end if; end process; process( TC ) begin if TC = "00000000" and OE='0' then p <= '1'; else p <= '0'; end if; end process; end count_down; смысл, что при LE =1 грузиться постоянно, и сохраняется последнее значение.. а потом работа как обычного синхронного счетчика вниз, с асинхронной загрузкой. в этом варианте настораживает использование слишком большого кол-а ресурсов кристалла, но при этом максимальное быстродействие, по сравнению со схемным построением Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 27 февраля, 2008 Опубликовано 27 февраля, 2008 · Жалоба Правильно ли так его описывать: Actel HDL CodingStyle Guide http://www.actel.com тоже есть и у Ксайлинкса... И у Альтеры... Выучить... Не задавать больше таких вопросов... Спрашивать: "Где взять учебник?" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
~KPbIC~ 0 27 февраля, 2008 Опубликовано 27 февраля, 2008 · Жалоба "Где взять учебник?" НЕ Аctel? понятный) ... можно даже на русском) а еще, если не сложно - ткните носом в те ужасы, которые вы увидели... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 27 февраля, 2008 Опубликовано 27 февраля, 2008 · Жалоба НЕ Аctel? понятный) ... можно даже на русском) а еще, если не сложно - ткните носом в те ужасы, которые вы увидели... У Актела прочитать раздел "Кодирование, независимое от аппаратной платформы"... Это годится для всех типов чипов. Суворова, Шейнин, Илья Тарасов, Все учебники по VHDL наизусть не помню... Из тех, где есть VHDL и Verilog - это: 2.9. Языки VHDL и VERILOG в проектировании цифровой аппаратуры. А.К. Поляков. изд. Солон 2003г. 2.10. ПЛИС фирмы ALTERA: элементная база, система проектирования и языки описания аппаратуры. В.Б. Стешенко. изд. Додэка-ХХI 2007г. 2.11. Xilinx Synthesis Technology (XST) User Guide. 1991-2000 Xilinx, ужасы, вот только первый: if LE='1' then TempC <= DI; TC <= TempC; здесь значение DI назначается переменной TempC. В это же время переменной TC назначается значение - какое??? И где вот такое описание фронта - clk'event Ведь это сброс, а какое значение у TempC было до сброса??? Короче Открыть ИСЕ на любом текстовом файле, найти в меню Edit пункт о шаблонах языка и выбирать нужные шаблоны, а на лепить черт знает что... И читать учебники... Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
~KPbIC~ 0 27 февраля, 2008 Опубликовано 27 февраля, 2008 · Жалоба А если описать счетчик так: entity cc8mm is port ( C : in std_logic; DI : in std_logic_vector (7 downto 0); L : in std_logic; OE : in std_logic; CLR : in std_logic; P : out std_logic); end cc8mm; architecture count_down of cc8mm is Signal TC : std_logic_vector ( 7 downto 0):= "00000000"; begin process(CLR,C,L) begin if CLR='1' then TC <= "00000001"; elsif L = '1' then TC <= DI; elsif C'event and C='1' then if OE ='1' then TC <= TC -1; end if; end if; end process; process( TC ) begin if TC = "00000000" then p <= '1'; else p <= '0'; end if; end process; end count_down; а остальное схемно сделать: Будет лучше? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться