Перейти к содержанию
    

12 минут назад, Alex77 сказал:

второй вариант создан из первого программой конвертации схематика в verilog.

 

Я считаю правильным вариантом вот такой:

    process(all)
    begin
        q                          <= (others => '0');
        q(to_integer(unsigned(a))) <= '1';
    end process;

А ещё лучше оформить в виде функции и поместить в пользовательский пакет. Написано один раз. А пользоваться можно всегда.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.... именно 2 в 4 не нашёл, есть сдвоенные. ....

https://www.ti.com/product/SN74LVC1G139

Functional Block Diagram

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, turnip said:

как найти микросхему нужной логики?

Ну раз не хотите делать нужное внутри одной ПЛИС, а желаете использовать внешнюю микросхему для этой цели (дешифрирования нужного устройства) - заранее предупрежу о грабельках - Вы уже изучили, как предупредить программу, в которой будете описывать взаимодействие (по железу - т.е. по сигналам) всех компонентов системы о задержках, вносимых этими внешними дополнительными элементами, которых так усиленно жаждете применить?

Это нужно - чтобы при переходе к практике не было мучительно больно гадать - почему не работает (или - еще хуже - работает со сбоями) - изначально ошибка в концепте/ошибка в описании железа, реализованного в ПЛИС/ошибка в программе внешнего (по отношению к ПЛИС) контроллера/ошибка в монтаже или же просто один сигнал опережает другой на несколько наносекунд...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Yuri124 сказал:

один сигнал опережает другой на несколько наносекунд...

Какие к чертям наносекунды!? :crazy:

ТС только вчера узнал что такое дешифратор! :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А еще: TTL, CMOS, LVTTL, LVCMOS, LVDS..... Питание 5В, 3.3В, 1.8В..... Быстродействие, нагрузочная способность..... и т.п. и т.д.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

25.09.2021 в 00:35, Flip-fl0p сказал:

Я считаю правильным вариантом вот такой:


    process(all)
    begin
        q                          <= (others => '0');
        q(to_integer(unsigned(a))) <= '1';
    end process;

А ещё лучше оформить в виде функции и поместить в пользовательский пакет. Написано один раз. А пользоваться можно всегда.

 

для разнообразия:

module top(
    input [2:0] num,
    output [4:0] out
    );
    
    assign out = 1'b1 << num;
    
endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 hours ago, andrew_su said:

А еще: TTL, CMOS, LVTTL, LVCMOS, LVDS..... Питание 5В, 3.3В, 1.8В..... Быстродействие, нагрузочная способность..... и т.п. и т.д.

А на высоких частотах и/или длинных линиях -- ещё всякие импедансы и прочая чёрная магия :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пересмотрел модульную схему:

1408386603_.jpg.11153821b8f861dd2978c39b3f195e26.jpg

Хочу сделать плату шины к которой можно подключить 4 устройства(это процессор на FPGA, контроллер памяти и контроллер периферии на STM32, видео карта на Sipeed Lichee Tang Nano)

Шину обмена данными представляю следующим образом:

148868806_.jpg.a381065cea3ed9db9569e4db2e2e0875.jpg

Генератор импульсов думаю это кварцевый генератор, счётчик это микросхема К176ИЕ4, дешифратор КМ555ИД4

Принцип работы. Генератор импульсов подаёт сигнал на счётчик, тот на двухразрядном выходе генерирует 00,01,10,11 выбирая тем самым текущее устройство которое может передавать данные на шину. Устройство передатчик получив управление подаёт на шину номер устройства приёмника и данные. Затем дешифратор подключённый к шине передаёт сигнал устройству приёмника для приёма данных. Устройство приёмник которому передают данные их читает.

Ещё смутно представляю как физически всё сделать, надо купить нужные компоненты протестировать работу на макетке, потом закажу изготовление платы. Такую шину можно использовать в разных проектах когда нужен обмен данными между устройствами. SPI не подходит потому что это обмен данными только двух устройств или одного с несколькими и нужно делать дополнительные сигнальные выводы. В моей шине любое устройство может обмениваться данными с любым другим устройством(например контроллер периферии для звука может получать данные от контроллера памяти или контроллер памяти может передавать данные в видеокарту и тд.) и шина данных состоит из 10 контактов два на выбор устройства получателя и 8 на данные. Для быстродействия сделал шину только для 4х устройств, но можно её расширить снизив немного пропускную способность если не увеличить количество контактов данных или увеличить для большей пропускной способности.

Изменено пользователем turnip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осталось еще загуглить что такое шина адреса и сигналы управления, и снова модульную схему пересмотреть. :biggrin:

И так до бесконечности...

Вам уже советовали изучить хотя бы старые (Z80 например и его шины) процессоры, а лучше вообще заняться чем-то другим?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, Freibier сказал:

Осталось еще загуглить что такое шина адреса и сигналы управления, и снова модульную схему пересмотреть. :biggrin:

И так до бесконечности...

Смотрел работу разных интерфейсов в том числе и PCI, который мне не понравился, поэтому стал продумывать свой интерфейс. Я забыл рассказать что ещё разработал и протокол передачи\приёма данных устройствами. Опишу в кратце:

Сначала устройство передатчик подаёт сигнал устройству приёмнику, что хочет ему передать некий пакет данных. Устройство приёмник если свободно, то сообщает, что готово получить данные иначе игнорирует сигнал на получение данных, а передающее устройство продолжает подавать сигнал на передачу и ждёт когда получающее устройство освободится передав сигнал готовности. Далее когда устройство передатчик получает сигнал готовности получения данных приёмником, то передаёт заголовок, в котором содержится адрес и количество данных пакета. Затем производится передача данных.

28 минут назад, Freibier сказал:

Вам уже советовали изучить хотя бы старые (Z80 например и его шины) процессоры, а лучше вообще заняться чем-то другим?

Опять же, я изучал как работает процессор Z80 и мне не понравилось это, для того времени конечно может и нормально, но сегодня логику работы передачи данных на аппаратном уровне можно упростить, а программно это сделать более продвинуто, раньше программно сделать было невозможно наверно, если только делать минипроцессоры микросхемы для такой логики(какую описал выше)

Изменено пользователем turnip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мдаааа, сообразительность у Вас действительно незаурядная!:biggrin:

И долго придумывали этот интерфейс?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 минут назад, turnip сказал:

Сначала устройство передатчик подаёт сигнал устройству приёмнику что хочет ему передать некий пакет данных. Устройство приёмник если свободно, то сообщает что готово получить данные. Далее устройство передатчик передаёт заголовок, в котором содержится адрес и количество данных пакета. Затем производится передача данных.

если я правильно понимаю, по описанию работы шины генератор импульсов, счетчик и дешифратор (левый верхний в схеме) не могут переключаться во время передачи, так как иначе следующее в цепочке переключений устройство будет считать, что оно может передавать данные по  общей шине. Как подобные коллизии решаются, если обратной связи устройств с генератором импульсов по схеме нет? что помешает счетчику переключиться во время передачи данных?

Изменено пользователем stealthisname

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, turnip said:

К176ИЕ4, дешифратор КМ555ИД4

А ещё неплохо было бы посмотреть справочные данные микросхем. Ибо ВНЕЗАПНО обнаружится, что 176-й серии подавай питание 9 В (и логические уровни соответствующие), 555-й -- 5 В, а всякие там STM32 и ПЛИСины в общем случае не выше 3,3 В.

А вообще, накал бреда знатный. Давно такого читать не приходилось :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, stealthisname сказал:

Как подобные коллизии решаются, если обратной связи устройств с генератором импульсов по схеме нет? что помешает счетчику переключиться во время передачи данных?

Насчёт коллизии хорошо подмечено. Надо наверно сообщать устройству передатчику о завершении его работы. Получив такой сигнал устройство перестанет передавать данные. Может кто посоветует как это сделать. Короче надо покупать компоненты и тестировать, возможно при переключении счётчиком на другое устройство коллизии не будет, а если будет тогда надо это как-то решать.

1 час назад, SII сказал:

Ибо ВНЕЗАПНО обнаружится, что 176-й серии подавай питание 9 В (и логические уровни соответствующие), 555-й -- 5 В, а всякие там STM32 и ПЛИСины в общем случае не выше 3,3 В.

А я специально указал маркировку, чтобы мне сказали правильно ли подобрал или нет и какие микросхемы лучше использовать. Кроме того питание шины отдельное. Думаю будет блок питания возможно 9v от которого выходы на питание шины и с понижением для устройств.

1 час назад, SII сказал:

А вообще, накал бреда знатный. Давно такого читать не приходилось :)

Это потому что кто-то изобретает :boast: а вы сопли жуёте :on_the_quiet2:

Изменено пользователем turnip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ОФФТОП: Я  таких "энтузиастов" называю "ардуинщики" - теории не знают, лепят из кубиков "замки", гордятся "работающим проектом" и жутко обижаются, когда указывают на ляпы и косяки...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...