User Tag List

Страница 5 из 41 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 404

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

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

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

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

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Жень, не проверишь ли мой пример, как там насчёт кода, всё ли корректно
    Всё корректно, молодец!
    Из мелких добавлений - в данном случае, поскольку y_out нигде более в проекте не используется. а просто выводится наружу, его можно не использовать, а результаты дешифрации сразу отдавать в y.
    И второе, в списке чувствительности процесса y_out также излишен. Его состояние никак не влияет на работу процесса, тем более, что это сигнал выходной.
    Образно говоря, в список чувствительности вносим те сигналы, которые входят в условия if и case. Больше ничего не надо.

    ---------- Post added at 18:47 ---------- Previous post was at 18:46 ----------

    Цитата Сообщение от Totem Посмотреть сообщение
    Согласен, твой подарок тебя ждет уже 2 года
    Что это???
    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
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

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

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    Ругается так: Object y of mode OUT can not be read.
    Правильно ругается. нафига ты у засунул в список чувствительности? Я же тебе только что разъяснял, что это не нужно.

    ---------- Post added at 20:02 ---------- Previous post was at 20:00 ----------

    вот это скомпилируй:
    Код:
    library IEEE; 
    use IEEE.std_logic_1164.all;
    use IEEE.STD_LOGIC_arith.ALL;
    use IEEE.STD_LOGIC_unsigned.ALL;
    
    entity dc_1 is
        port(a : in std_logic_vector (3 downto 0); -- Вход (8421).
            y : out std_logic_vector (15 downto 0)); -- Выход 16 выводов.
    end entity dc_1;
    
    architecture id_1 of dc_1 is -- Дешифратор 4:16.
    begin
        process (a)
            begin
                case a(3 downto 0) is
                    when "0000" => y <= "0000000000000001";
                    when "0001" => y <= "0000000000000010";
                    when "0010" => y <= "0000000000000100";
                    when "0011" => y <= "0000000000001000";
                    when "0100" => y <= "0000000000010000";
                    when "0101" => y <= "0000000000100000";
                    when "0110" => y <= "0000000001000000";
                    when "0111" => y <= "0000000010000000";
                    when "1000" => y <= "0000000100000000";
                    when "1001" => y <= "0000001000000000";
                    when "1010" => y <= "0000010000000000";
                    when "1011" => y <= "0000100000000000";
                    when "1100" => y <= "0001000000000000";
                    when "1101" => y <= "0010000000000000";
                    when "1110" => y <= "0100000000000000";
                    when others => y <= "1000000000000000";
                end case;
        end process;
    end id_1;
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

  4. #3

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

    По умолчанию

    Цитата Сообщение от Viktor2312 Посмотреть сообщение
    process (это список чувствительности?)
    Верно
    Я тут хочу еще одну задачку подсунуть. просто она мне полчаса назад свалилась в реале, от нашего общего коллеги Микка_А
    Вот рисунок, это по сути - программа в квартусе, но в схемном вводе.



    Задача - перевести эту схемку в VHDL.
    Способы могут быть разные, разумеется.
    В дополнение к задаче - пины у ПЛИСы могут быть не только на вход и выход и вход/выход, а еще и "выход с возможностью чтения (buffer)".
    Я этим воспользовался, хотя это совсем и необязательно.
    Код на VHDL написан за десять минут, под спойлером.

    Скрытый текст


    Код:
    library IEEE; 						
    use IEEE.std_logic_1164.all;
    use IEEE.STD_LOGIC_unsigned.ALL;
    
    entity divider is		
    	port(				
    	CLK		: in std_logic;		
        Q       : buffer std_logic_vector(9 downto 0)  
        );
    end divider;		
    
    architecture arch of divider is  
    
    signal 	CNT		: std_logic_vector(1 downto 0);  
    
    begin 
    
    CNT <= CNT+1 when (rising_edge(CLK)); 
    Q(0) <= (CNT(0) and CNT(1));			
    Q(1) <= not(Q(0));						
    Q(2) <= ((not CNT(0)) and CNT(1));		
    Q(3) <= not Q(2);
    Q(4) <= (CNT(0) and (not CNT(1)));
    Q(5) <= not(Q(4));
    Q(6) <= ((not CNT(0)) and (not CNT(1)));
    Q(7) <= not(Q(6));
    Q(8) <= (Q(0) or Q(2));					
    Q(9) <= (Q(4) or Q(6));				
    
    end arch;
    [свернуть]
    Последний раз редактировалось Ewgeny7; 11.10.2014 в 21:33.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

  5. #4

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

    По умолчанию

    Viktor2312, всё правильно
    Сейчас - вообще всё правильно.

    ---------- Post added at 21:54 ---------- Previous post was at 21:47 ----------

    Саму мелкую логику (И, ИЛИ, НЕ) тоже не нужно как-либо отображать. Берешь выходы, и от них и пляшешь, вставляешь всю необходимую and-or-not прямо в булеву алгебру.

    ---------- Post added at 22:37 ---------- Previous post was at 21:54 ----------

    История с этой задачей получила забавный поворот событий...
    Вот диаграмма симуляции кода на VHDL:



    И здесь - всё правильно, "бегущий огонь" плюс "бегущая тень" плюс еще два клока в противофазе.
    Но когда запустили в симуляцию оригинал на схемном вводе....



    Вот такая вот ботва...
    Я, когда только начинал учиться работать с ПЛИСами, тоже сидел на "схематике".
    Кстати, прошивка СМУК-2 сделана на нем.
    Но тоже частенько натыкался на странную работу прошивки... Поэтому плюнул, растерел и ушел на VHDL. Потом уже, позже, разобрался с Verilog. И Скорпион-1024 для самодельной девборды писал на Верилоге, и проект СкорпЭво - тоже на верилоге. Но, первая любовь - самая чистая, VHDL мне нравится больше
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

  6. #5

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

    По умолчанию

    Viktor2312, Вроде как всё похоже на правду
    Ты у себя еще не поставил Кактус с симулятором?

    ---------- Post added at 11:27 ---------- Previous post was at 10:45 ----------

    Только симуляция маленько бред выдает, проверь скобки приоритета и логику.

    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

  7. #6

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

    По умолчанию

    А ты убери лишние НЕ, станет проще
    Оставь только И, а инверторы переставь на линии, на которых их небыло.

    ---------- Post added at 12:16 ---------- Previous post was at 12:13 ----------

    Кстати, по диаграммам видно, что у тебя неправильно реализованы сигналы out_1_1 и out_1_2. И они тянут за собой мертвый out_or1

    ---------- Post added at 12:17 ---------- Previous post was at 12:16 ----------

    А все остальное тикает как надо.

    ---------- Post added at 12:19 ---------- Previous post was at 12:17 ----------

    Ладно, не будем тянуть кота за хвост, в строчке

    out1_2a <= not cnt (0) and cnt (1);

    надо просто поставить две скобки:

    out1_2a <= not (cnt (0) and cnt (1));

    и всё заработает правильно.

    ---------- Post added at 12:21 ---------- Previous post was at 12:19 ----------

    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

  8. #7

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

    По умолчанию

    Да, всё правильно, как один из вариантов.
    Заглядывай
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

  9. #8

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

    По умолчанию

    У меня давно блуждала мысль сделать ЮТ-88 на попуПЛИСной основе.
    Т.е., берем настоящий 580ВМ80А, память статику 64кб, ПЗУ, индикаторы и CPLD.
    Задача сама по себе копеечная, сел и сделал. Наверное хорошо, что я это так до сих пор и не сделал, ибо эту идею можно применить как темы следующих практических занятий
    Для начала можно сделать на VHDL симуляцию 580ВК28.
    По сути, там обычный двунаправленный буфер, направление которого определяется сигналами слова состояния ВМ80.
    Какие биты за что отвечают - нам тоже известно.
    Поэтому задача номер один - сделать дешифратор слова состояния в сигналы MEM_RD, MEM_WR, IO_RD, IO_WR.
    Задачка уже по силам?
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

  10. #9

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

    По умолчанию

    Я пока слабо представляю, что это за 580ВМ80 такой 64-хбитный
    В реале они как-то попроще будут...
    И как ты его собираешься реализовывать?
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

  11. #10

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

    По умолчанию

    Частотомер на ПЛИС?
    Для такой задачи более подходят микроконтроллеры...
    Не знаю, надо что-то другое...

    ---------- Post added at 22:07 ---------- Previous post was at 21:58 ----------

    Вот тебе задачка, "близкая к реальности".
    Имеем входящий клок 20МГц.
    Нужно синтезировать два синхросигнала, горизонтальной и вертикальной развертки VGA.
    Вот тебе картинка с времянками сигнала:



    Калькулятор виндовый тебе в помощь! Все решается прекрасно с его помощью
    Как всегда, я выложу свой вариант сюда под спойлер.

    Скрытый текст


    Код:
    library IEEE; 
    use IEEE.std_logic_1164.all;
    use IEEE.STD_LOGIC_unsigned.ALL;
    
    entity divider is
        port(
            CLK 	: in std_logic;
            H_SYNC 	: out std_logic;
            V_SYNC 	: out std_logic
            );
    end divider;
    
    architecture syn of divider is 
    
    signal vcnt		: std_logic_vector(9 downto 0);
    signal hcnt 	: std_logic_vector(9 downto 0);
    
    begin
    
    process(CLK)
    begin
    	if rising_edge(CLK) then
    		if (hcnt(9 downto 7)="101") then  -- 640 точек дают 32мкс на частоте 20МГц
    			hcnt <= "0000000000";
    			if (vcnt="1000001100") then -- 524 строчки. 524*32мкс=16768мкс, что примерно 16,77мс.
    				vcnt <= "0000000000";
    			else
    				vcnt <= vcnt+1;
    			end if;	
    		else
    			hcnt <= hcnt+1;
    		end if;		
    		if (hcnt=520) then
    			H_SYNC <= '0';
    		elsif (hcnt=600) then
    			H_SYNC <= '1';
    		end if;		
    		if (vcnt=490) then
    			V_SYNC <= '0';
    		elsif (vcnt=493) then
    			V_SYNC <= '1';
    		end if;	
    	end if;
    end process;
    			
    end syn;
    [свернуть]




    ---------- Post added at 22:55 ---------- Previous post was at 22:07 ----------

    Я свой код выложил под спойлер. Диаграмма прилагается, времянки там соответствуют требуемым (плюс/минус чуть-чуть, допускается).

    ---------- Post added at 23:21 ---------- Previous post was at 22:55 ----------

    Добавил немножко кода, чтобы проверить проект "вживую".



    ---------- Post added at 23:34 ---------- Previous post was at 23:21 ----------

    Последний раз редактировалось Ewgeny7; 12.10.2014 в 22:53.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

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

Страница 5 из 41 ПерваяПервая 123456789 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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