5de2386bb5Тактовый сигнал, который распространяется по всему проекту, берется с блока PLL. Он умножен на 4 от значения частоты на соответствующей ножке ПЛИС и теперь все модули внутри ПЛИС работают на частоте 100МГц . Так гарантировано получаем один и тот же синхросигнал во всей схеме. Из книжки ПЛИС Xilinx Тарасова И. Е.;
master
sokolovstanislav2024-10-21 18:27:29 +0300
dfe22a8ab2Разные способы зачитать из ячейки памяти адреса устройства и ригистра.sokolovstanislav2024-06-13 16:27:00 +0300
0b80c8a3d2Начали тестирование параллельной шины. Для контроля счетчика полного круга работы с адресным пространством шины добавили новый регистр. Проект при этом изменился - теперь в каждом блоке есть базовый регистр, от которого начинаем считать остальные.sokolovstanislav2024-06-11 16:21:14 +0300
cd65199ea6Здесь выделено семь бит в регистре SB_CMD для определения полупериода синхросигналаsokolovstanislav2024-06-10 18:25:59 +0300
2b055193afЭтот вариант работает стабильно. Таймаут перенесли в конец любой передачи, чтобы вывести периферийное устройство в начальное состояние. Линия занята SB_CONTROL_LOWER(1) = '1' - появится в начале передачи и закончится после таймаута.sokolovstanislav2024-06-10 17:52:14 +0300
92fd7969bcДобавили аппаратный контроль таймаута в шине для готовности периферийный плат. Добавили в регистр контроля шины состояние передачи (бит 1). Уменьшили период такта по сихросигналу на четверть.sokolovstanislav2024-06-07 12:21:36 +0300
6b28fad4b1Начали тестирование последовательной шины. S_RES (ножка 30С управляется из сервисного регистра SRV_LEDS(14)). Синхросигнал инвертирован в SB. Данные от периферийных устройств неверно заходили в фильтр (исправлено). ПО проходит тесты, пока не работает.sokolovstanislav2024-06-07 10:50:55 +0300
f72d466925Исправил работу светодиодов в регистре LEDS блока TEST. Поменял местами Er0_in и Er0_out - не схеме названы некорректно.sokolovstanislav2024-04-11 18:49:35 +0300
5adc23b007Три блока на шине: PWM, LedController и TEST. В TEST можно прочитать линию Er0_in, а так же управлять светодиодами FPGA_LEDS с пятого по второй. Первый сетодиод остался как индикатор работы ПЛИС.sokolovstanislav2024-04-09 17:11:52 +0300
a9a45aaad4Изменили все LOWER и UPPER адреса в словах так как контроллер передает сначала младший байт потом старший.sokolovstanislav2024-04-08 12:29:11 +0300
9394bee3c3Добавил блок работы с МАЗ, но надо детально проверять состояния автомата. Код переписал, но много путаницы было в проекте для SP2, из-за этого уверености в работе модуля нет.sokolovstanislav2024-04-03 18:51:31 +0300
51ae2e64a4Добавил в проект LedController. Начал реализацию загрузчика.sokolovstanislav2024-04-02 18:08:20 +0300
da0eef977cДобавил в проект модуль ШИМ (регистры согласно описанию в адресном пространстве). Подключил модуль к портам вводы/вывода, кроме внешнего error. Его пока завел на константу. В каждый цифровой фильтр добавил библиотечный элемент D-тригера (dff), тем самым сместив вправо еще на один такт все сигналы. Такую прошивку надо еще раз тестировать.sokolovstanislav2024-04-01 18:52:02 +0300
845f3fd223Исправили в соответствии с описанием адресного пространства блок ParallelBusMaster в части счетчика ошибок. Убрали из проекта библиотечные элементы фильтров, оставили один. Добавили синхронный блок инверсии сигналов для работы SerialBus. Настроили буферы на 96 ногой шине в соотвтествии с режимом работы NOT LOAD. Чтобы исправить назначение ног, предназначенных по умолчанию только для конфигурации, необходимо было в Assigments > Device > Device & Pin options > Dual Purpose Pins > двойным кликом на интересующих пинах выбрать regular I/O. Info (169125): Pin ~ALTERA_ASDO_DATA1~ is reserved at location 12 (Здесь у нас nSBclk); Info (169125): Pin ~ALTERA_FLASH_nCE_nCSO~ is reserved at location 14 (LoadMode); Info (169125): Pin ~ALTERA_DCLK~ is reserved at location 23 (остается только для конфигурации); Info (169125): Pin ~ALTERA_DATA0~ is reserved at location 24 (остается только для конфигурации); Info (169125): Pin ~ALTERA_nCEO~ is reserved at location 162 (ТК4);sokolovstanislav2024-03-28 15:54:34 +0300
5370ab4575Для конвертирования используем библиотеки use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all. Добавили ParallelBusMaster на схему. Изменили условия чтения и записи в блоках с адресным пространством. При 200МГц синхросигнале скорость передачи двух байт (за два такта) уменьшилась до 110 нс.sokolovstanislav2024-03-28 13:47:49 +0300
4b3a28ebbcЗаменили все DigitalFilterXXX на один расширяемый с помощью параметров модульsokolovstanislav2024-03-26 11:50:50 +0300
5fba6ce8b4Заменил RAM9X8 на расширяемый с помощью параметров RAM.sokolovstanislav2024-03-26 10:23:20 +0300
f3a7b565e4Ввели фазовый сдвиг на 4 такта для сигнала WE, так как в режиме записи не успевали выставляться данные на шину данных и ПЛИС зачитывала нули по всем битам. Это помогло стабилизировать запись. Чтение работает хорошо. Полный цикл записи или чтения бвух байт равен примерно 200нс.sokolovstanislav2024-03-19 18:39:41 +0300
b1038bfc75Убрали конечный автомат из работы RAM9X8, шина заработала с синхроклоком 100МГц.sokolovstanislav2024-03-19 11:40:31 +0300
a398de1515Зафильтровали, используя фазовый сдвиг на один такт, сигналы OE, CE, WE. Перед этим еще дальше сдвинули чтение адреса и проверку OE после спада CE (до 120 нс). Сейчас шина работает стабильно. Так же в этой редакции заработали выходы блока PLL (100МГц и 200МГц).sokolovstanislav2024-03-15 16:35:16 +0300
f6de1e103dВ работе модуля RAM9X8 сдвинули на один такт после спада CE проверку адреса.sokolovstanislav2024-03-15 13:18:52 +0300
afea08ff2dПротестировали память. Работает. Сделали новую RAM9X8, где 512 ечеек по 8 бит данных. Избавились от ножек BL.sokolovstanislav2024-03-14 18:30:15 +0300
beef10a15bВ описании предыдущего коммита ошибка: память определялась как синхронная. Увеличили размерность памяти 8х32. Со стороны контроллера ввели ножки nBL. Это выбор байта (от 0 до 3) в ячейки памяти. Добавили описание блока памяти. После синтеза, который стал занимать намного больше времени, блок памяти перестал определятся как синхронная память. Данные по загрузке ПЛИС: Total logic elements 10,706 / 24,624 ( 43 % ) Total combinational functions 6,603 / 24,624 ( 27 % ) Dedicated logic registers 8,249 / 24,624 ( 33 % ) Total registers 8249 Total pins 25 / 149 ( 17 % ) Total PLLs 1 / 4 ( 25 % )sokolovstanislav2024-03-14 11:27:47 +0300
8c0178953aИзменили блок памяти RAM в соответствие с диаграммой на странице 571 технического описания GD32F403_User_Manual. После синтеза quartus распознал блок как асинхронную память. Вывели на светодиоды синхросигналы из блока PLL для проверки на осциллографе.sokolovstanislav2024-03-12 17:54:31 +0300
71cbaf57d8Для согласования работы с процессором было принято решение перейти на питание ПЛИС 3.3В. Внесли изменения в проект.sokolovstanislav2024-03-12 16:30:45 +0300
6bb13aec36Откорректировал блок памяти RAM для возможной работы с двумя устройствами одновременно. Одно из них - внешний контроллер. Вторым будет блок сбора информации для обновления данных. Сейчас в блоке памяти нет взаимной блокировки для двух независимых процессов и, существует возможность записать в одну и ту же ячейку памяти в один и тот же момент времени разные значения. В нашем проекте поскольку дальше будет введено ограничение, которое обяжет писать служебные и критические (напрямую участвующие в алгоритмах работы преобразователем частоты) данные только в определенные заранее известные регистры, такое невозможно. Память на уровне использования программистом будет поделена две области. Ту, в которую можно писать и считать записанное значение и ту, из которой можно будет только считать значения. Со стороны устройства будут использованы для записи только те ячейки, которые процессор будет только читать. Со стороны процессора будут использованы для записи только те ячейки, которые блоки внутри устройства будут только читать.sokolovstanislav2024-03-04 18:16:35 +0300
7ee9a34a42Начали проект переноса ПО под Альтеру. В проект MainController добавлен блок умножителя частоты и блок памяти на 255 ячеек по 16 бит данных. В память можно записать значение в ячейки и прочитать их оттуда. Преднастроек или каких либо зарезервированных ячеек пока нет. В отличие от проекта для Spartan2 здесь не будет ServiceDataDispatch. Вместо него данные из MCU будут сразу же грузиться в логические блоки (PWM, HWP и другие).sokolovstanislav2024-03-04 17:16:43 +0300