User Tag List

Показано с 1 по 10 из 404

Тема: Изучение с "нуля" VHDL и ПЛИС Xilinx

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    147
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Последние бегущие огоньки заняли суммарно 8 макроячеек.
    Сейчас мы проект усложним, введем константы, типа ПЗУ. Размер вырастет.
    В 3064 вообще немало влезает, корпусов так около 7-10 "средней" логики.

    ---------- Post added at 13:08 ---------- Previous post was at 12:49 ----------

    А сейчас мы сделаем "Программируемые Огни"
    Смотрим код, разбираем его, всё достаточно просто.
    Здесь уже используется счетчик импульсов CNT, трехразрядный. Соответственно, он имеет восемь состояний. Сразу за счетчиком у нас стоИт дешифратор, который имеет также восемь "ячеек ПЗУ", содержимое которых определяет, что мы получим на выходных пинах.

    Код:
    library IEEE; 
    use IEEE.std_logic_1164.all; 
    use IEEE.std_logic_unsigned.all;  
    
    entity led is
    	port(
    	CLK		: in std_logic;
    	Q		: out std_logic_vector(7 downto 0)
    	);
    end led;
    
    architecture led_arch of led is 
    
    signal CNT		: std_logic_vector(2 downto 0);
    signal Q_reg	: std_logic_vector(7 downto 0);
    
    begin
    
    process(CLK,CNT)
    begin
    	if (rising_edge(CLK)) then
    		CNT <= CNT+1;
    		case (CNT) is
    			when "000" => Q_reg <= "10000001";
    			when "001" => Q_reg <= "01000010";
    			when "010" => Q_reg <= "00100100";
    			when "011" => Q_reg <= "00011000";
    			when "100" => Q_reg <= "00000000";
    			when "101" => Q_reg <= "00011000";
    			when "110" => Q_reg <= "00100100";
    			when "111" => Q_reg <= "01000010";
    		end case;
    	end if;	
    end process;
    
    Q <= Q_reg;
    
    end led_arch;
    А вот и диаграмма работы из симулятора:



    Красиво? Можно изменять рисунок свечения по своему усмотрению.
    Обратите внимание, я здесь и счетчик, и дешифратор засунул в один процесс, тактируемый клоком. Так вполне можно, и даже - лучше. И код читабельней, и вся схема работает полностью синхронно. Если вынести дешифратор из процесса и не тактировать его, то всё будет работать тоже. Но... Возможны проскакивания "иголок" на выходе дешифратора, поскольку счетчик все же не мгновенно меняет состояние своих разрядов.

    Это проект занял всего 11 макроячеек.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 172
    Последнее: 28.11.2017, 13:28
  2. Микроконтроллеры STM32, "с нуля".
    от Viktor2312 в разделе Для начинающих
    Ответов: 279
    Последнее: 07.11.2016, 19:45
  3. Техническая литература: Языки описания аппаратуры "AHDL, VHDL и Verilog"
    от Viktor2312 в разделе Техническая литература
    Ответов: 1
    Последнее: 14.09.2014, 22:29
  4. Ответов: 71
    Последнее: 31.07.2014, 19:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •