Форум программистов, компьютерный форум, киберфорум
Hretgir
Войти
Регистрация
Восстановить пароль
Карта форума Блоги Сообщество Поиск Заказать работу  
Оценить эту запись

GOWIN EDA - глюковато, но не глупо.

Запись от Hretgir размещена 30.06.2024 в 13:59

Принялся за внешний модуль, в который будет входит цепь последовательной активации ячеек памяти, состоящая из пяти шести-диодов шесть, звеньев, и стартовый загрузчик состоящий из трёх TRS триггеров.
Синтезированная цепь выглядит так
Код:
module Mych
(input StartTact, Set,  ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, InJamp,
output  FinishTact, Finish, input wire  [1:0]se[0:5], [1:0] se2 [0:4], output wire [1:0]ActivMemo[0:5]);
genvar i;
generate
wire [0:2]OtJam, OutFillsi[0:5], OutStu1[0:5], OutFStu[0:5], OutFStu1[0:5], ORi[0:5], Fini[0:5];
MyCF mycf(StartTact, Set,  ResLim, ResFil, Fillsin, limit, Run, Zero, Unit,InJamp,,,,
,se[0],,Fini[0],ORi[0], OutFillsi[0], OutStu1[0], OutFStu[0], OutFStu1[0], ActivMemo[0]);
bufif1 bf0(FinishTact, ActivMemo[0], ActivMemo[0]);
bufif1 bf1(Finish, Fini[0], Fini[0]);
for (i=0; i<5; i=i+1 ) begin:MyC_generation
//assign se2[i] = se[i];
MyC myc(StartTact, Set,  ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, ORi[i], OutFillsi[i], OutStu1[i], OutFStu[i], OutFStu1[i]
,se[i+1],se2[i], Fini[i+1],ORi[i+1], OutFillsi[i+1], OutStu1[i+1], OutFStu[i+1], OutFStu1[i+1], ActivMemo[i+1]);
bufif1 bf0(FinishTact, ActivMemo[i+1], ActivMemo[i+1]);
bufif1 bf1(Finish, Fini[i+1], Fini[i+1]);
end
endgenerate
endmodule

.
И что хочется отметить, что IDE достаточно не глупа, и вот как она синтезеирует внений модуль с предыдущим внутренним (цепью).
Код:
module ActivMem ();
wire sig1,sig2,sig3;
Trs tr1(sig1, sig2, sig3);
//not n0();
Trs tr2();
Trs tr3();
Mych();
MyCount(clk,FinishTact, StartTact);
endmodule
И вот она дудодумалась, что те шесть внутри - практически один, только "растиражированный", и один почти такой-же... В общем очень не глупо, даже и не думал что сделано так.

По двум нижним слева, и одному справа, контактам, на внутреннем модуле Mych - видны индексы проводов (пока я так понимаю, что это именно индексы проводов шлейфа), неплохо IDE переносит образ внутренних модулей на внешний.

Вообще основная работа над цепью уже сделана давно - видно по уменьшающемуся с каждым разом коду. Осталось загрузчик и вывести на светодиоды GOWIN nano 9k. Делаю не спеша уже, по настроению и состоянию. Таких https://habr.com/ru/articles/805883/ головоломок как с отладкой в симуляторе и изобретением заглушек ошибок - нет уже давно. Функционал конечно теперь расширен, но это не суть. В общем очень не плохо вроде работает IDE - ожидал больших проблем.
И подкорректировал немного

Код:
module Mych
(input StartTact, Set,  ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, InJamp,
output  FinishTact, Finish, input wire  [1:0]se[0:5],se2, output wire [1:0]ActivMemo[0:5]);
genvar i;
generate
wire [0:2]OtJam, OutFillsi[0:5], OutStu1[0:5], OutFStu[0:5], OutFStu1[0:5], ORi[0:5], Fini[0:5];
MyCF mycf(StartTact, Set,  ResLim, ResFil, Fillsin, limit, Run, Zero, Unit,InJamp,,,,
,se[0],,Fini[0],ORi[0], OutFillsi[0], OutStu1[0], OutFStu[0], OutFStu1[0], ActivMemo[0]);
bufif1 bf0(FinishTact, ActivMemo[0], ActivMemo[0]);
bufif1 bf1(Finish, Fini[0], Fini[0]);
for (i=0; i<5; i=i+1 ) begin:MyC_generation
//assign se2[i] = se[i];
MyC myc(StartTact, Set,  ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, ORi[i], OutFillsi[i], OutStu1[i], OutFStu[i], OutFStu1[i]
,se[i+1],se[i], Fini[i+1],ORi[i+1], OutFillsi[i+1], OutStu1[i+1], OutFStu[i+1], OutFStu1[i+1], ActivMemo[i+1]);
bufif1 bf0(FinishTact, ActivMemo[i+1], ActivMemo[i+1]);
bufif1 bf1(Finish, Fini[i+1], Fini[i+1]);
end
endgenerate
endmodule
И почему я подумал что этот образ переносит именно IDE - потому, что если не задавать порты ввода-вывода, то иногда просто квадрат без пинов может прорисовать.
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot from 2024-06-30 13-51-15.png
Просмотров: 189
Размер:	49.1 Кб
ID:	8808   Нажмите на изображение для увеличения
Название: Screenshot from 2024-06-30 13-58-12.png
Просмотров: 182
Размер:	17.6 Кб
ID:	8809   Нажмите на изображение для увеличения
Название: Screenshot from 2024-06-30 21-20-54.png
Просмотров: 186
Размер:	42.8 Кб
ID:	8811  

Размещено в Без категории
Показов 743 Комментарии 2
Всего комментариев 2
Комментарии
  1. Старый комментарий
    Аватар для Hretgir
    Странно, но только вот так получаются шины из н-ного количества проводов. Все остальные варианты замыкают провода внутри модуля.

    Код:
    module Mych
    (input StartTact, Set,  ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, InJamp,
    output  FinishTact, Finish, input wire  [0:0]se[0:5], output wire [0:0]ActivMemo[0:5]);
    Никакой нормальной литературы особо нет - из пустого в порожнее готовы 100 раз перелить, а чтобы расширить читателю обзор - это нет.
    Если я сделаю так [5,0] se или [0,5] se - все провода замыкает и никакого массива толком не получается. Может это особенности синтксиса GOWIN , может просто глюк - мне пока не известно.
    Это плохо - источники сведений скудны, займёт время какое-то.
    Запись от Hretgir размещена 03.07.2024 в 21:42 Hretgir вне форума
  2. Старый комментарий
    Аватар для Hretgir
    И ещё как вариант, каждый элемент массива проводов должен быть инициализирован в блоке генерации, видел в сети инициализацию в теле модуля.
    Запись от Hretgir размещена 05.07.2024 в 05:47 Hretgir вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru