GOWIN EDA - глюковато, но не глупо.
Запись от Hretgir размещена 30.06.2024 в 13:59
Принялся за внешний модуль, в который будет входит цепь последовательной активации ячеек памяти, состоящая из Синтезированная цепь выглядит так Код:
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 |
Всего комментариев 2
Комментарии
-
Странно, но только вот так получаются шины из н-ного количества проводов. Все остальные варианты замыкают провода внутри модуля.
Код: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]);
Если я сделаю так [5,0] se или [0,5] se - все провода замыкает и никакого массива толком не получается. Может это особенности синтксиса GOWIN , может просто глюк - мне пока не известно.
Это плохо - источники сведений скудны, займёт время какое-то.Запись от Hretgir размещена 03.07.2024 в 21:42 -
Запись от Hretgir размещена 05.07.2024 в 05:47