Важная информация

User Tag List

Страница 6 из 41 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 404

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

  1. #51

    Регистрация
    19.06.2014
    Адрес
    г. Харьков, Украина
    Сообщений
    731
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    15 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не исключаю что на VHDL возможна такая запись, гуру VHDL приведите пример, этот код с натяжкой показывает как раз разницу между функциональным и поведенческим описанием

  2. #52

    Регистрация
    13.12.2007
    Адрес
    Архангельск
    Сообщений
    2,189
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    13 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ewgeny7 Посмотреть сообщение
    Давайте без верилога в этой теме. Третий раз уже посты выпиливаю...
    Я тоже пишу на верилоге, но VHDL один фиг роднее... Он как-то монументальней и паскалистее
    Согласен, твой подарок тебя ждет уже 2 года.
    Ты слыхал как грузится Flyshark ?! нет, совсем не тот, что на дискете...а Flyshark, тот самый блин Flyshark...тот ,что был когда то на кассете...
    zx spectrum 48 issuse 6a, Ленинград-1, zx spectum 128 +2 grey,Пентагон-128, ZXM-Phoenix 5.02 ( assembly)

  3. #53

    Регистрация
    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"

  4. #54

    Регистрация
    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"

  5. #55

    Регистрация
    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"

  6. #56

    Регистрация
    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"

  7. #57

    Регистрация
    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"

  8. #58

    Регистрация
    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"

  9. #59

    Регистрация
    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"

  10. #60

    Регистрация
    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"

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

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

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

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

Ваши права

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