Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Синхронный счетчик с асинхронной загрузкой
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
~KPbIC~
Пытаюсь сделать такой в 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
Цитата(~KPbIC~ @ Feb 27 2008, 12:51) *
Правильно ли так его описывать:


Actel HDL CodingStyle Guide http://www.actel.com
тоже есть и у Ксайлинкса... И у Альтеры...
Выучить... Не задавать больше таких вопросов...
Спрашивать: "Где взять учебник?"
~KPbIC~
Цитата(iosifk @ Feb 27 2008, 13:03) *
"Где взять учебник?"


НЕ Аctel? понятный) ... можно даже на русском)
а еще, если не сложно - ткните носом в те ужасы, которые вы увидели...
iosifk
Цитата(~KPbIC~ @ Feb 27 2008, 13:13) *
НЕ А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~
А если описать счетчик так:
Код
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;


а остальное схемно сделать:

Будет лучше?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.