Nikolay @FPGA-Mechanic
Hardware designer
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity
Specialization
RTL
Lead
FPGA
Verilog HDL
VHDL
Electronics Development
Circuitry
Development of printed circuit board
Там LUT 4-входовой уже. Так что секции "плитки" явно отличаются.
Супер!
Но уже готовится развитие: STI 1.1
На практике арбитраж я реализовал, но по сути это разбиение на несколько отдельных сегментов (шин).
Проявись тогда.
Описанный протокол шире AMBA APB.
Я разработал мост APB-STI. Знаю, о чём речь.
Вот AMBA-AHB — уже круче протокол. Ну там и конвейеризация есть.
Не хватило времени.
Но AMBA APB не имеет такого функционала, а Wishbone описывает только интерфейс агентов без подходов к построению инфраструктуры.
Да, здесь это опубликовано «с целью публикации». Сложное описалово — потому что это спецификация по сути.
Давно уже дешевле использовать компоненты азиатского производства. Причём дешевле они не 10 и даже не в 100 раз, больше! А вы пишете про отечественный коммутатор Ethernet. Кста, Миландр делает 4-портовый контроллер 5600ВВ3, аналог IC+ IP175A. Только стоит эта металлическая какашка бешеные деньги, дороже десятка импортных изделий в сборе.
Так что есть только два основных сегмента рынка для отечественных компонентов:
1. Военная и аэрокосмическая промышленность
2. Спец. аппаратура для органов власти.
По сути все.
Остальное, включая нужды народного хозяйства, будет делаться из азиатского импорта.
В первом случае (CPLD серии XC9500) результат был проверен на осциллографе. Глитчей не было. И комбинационка там работает по принципу «изменение входной комбинации только по одному входу», как в коде Грея, так что гонок быть не должно. Синхросигнал на выходе не выровненный, Duty Cycyle 40%, согласно рис. 5. Это приемлемо.
Constraint был задан простой, период в нс и Duty Cycyle. Непосредственно в *.ucf прописан по сигналу выхода комбинационки. В Spartan2 все работало как часы.
Вот касательно задержки — согласен. Задержка может возникнуть на длинных трассировочных ресурсах, тогда CNTR_STATE придёт на вход защёлки с опозданием, после заднего фронта CLK, что сломает алгоритм. Но, во-первых, для рассмотренной модели Duty Cycle для CLK должен быть 50%, поэтому «коротких единиц» относительно периода на CLK быть не должно. Во вторых, эту схему следует раскладывать в FPGA вручную, либо задать тесную область в кристалле для её Place&Route. Тогда длинных трассировок не будет.
Возможно, следовало в этом месте поставить Flip-Flop вместо Latch, работающий по negedge, но в старой альтере FLEX, такой зверь становится макросом с инвертором на клоке, так что не везде такой подход прокатил бы.
Рассмотренный пример под канонические правила проектирования не подходит. Но из всего бывают исключения.
Задача была такая: на CPLD разделить тактовую частоту на 2.5 и выдать «на улицу» для синхронизации другой микросхемы.
Другая задача в Spartan-2 из несущей 64МГц получить 42.7 при условии занятости всех DLL.
Ваш вариант — заставить работать все регистры на вдвое большей частоте и рулить их переключением раз в три такта для CPLD вообще нереален, ибо нет умножителя частоты, а для старых FPGA тоже крайне затруднителен, ибо упрёмся в предел работы самих регистров и глобальной сети синхросигнала.
Касательно ошибок тайминга после PAR — следует задать Timing Constraint по сгенерированному клоку — выходу описанной схемы. Я так и делал.
Вообще для таких нужд обычно берут два независимых генератора.
На материнских платах используют специальные микросхемы ФАПЧ типа PLL, которые заточены под определённый чипсет и генерят все нужне частоты.
48 МГц / 1.5 = 32 МГц
48 МГц / 2.5 = 19.2 МГц
48 МГц / 3 = 16 МГц
48 МГц / 5 = 9.6 МГц
Ответ — «никак». Не кратную частоту хотите.
Все это имеет право на жизнь одновременно.
Сети RS485 в промышленности, может уже и «не тянут», ибо они сгорают от гроз, но «на борту» они ещё очень даже используются наравне с разными Mil1553, ARINC-429 и прочими.
Возможно, драйвер у них кривой? На PCI невозможно сделать Legacy-порты с адресами 2f8/2e8/3f8/3e8, которые подхватываются бивисом и осью автоматически и используют стандартный системный драйвер UART 16450/550. Так что у PCI — контроллеров дрова должны быть свои, оригинальные.
Преобразователь 232-422 — штука нехитрая, но 232 работает до 115.2К. На мегабитах его формально использовать не следует.