accurate_random 1 7 июля Опубликовано 7 июля (изменено) · Жалоба Не могу понять как это сделать. Gowin IDE Цитата module Trs (input S, R, output reg Q); always @(*) begin Q =0; if (S==1) Q=1; if (R==1) Q=0; end endmodule ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// module MyCF (input StartTact, Set, ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, InJamp, InFillsin, InStub1, InFStub, InFStub1, Sel, Sel2, output Finish, OutJamp, OutFillsin, OutStub1, OutFStub, OutFStub1, MemoriOut); wire sig0; bufif1 bf0(InFillsin, Fillsin, Sel); Trs trs0(InFillsin, ResFil, trs0_0); and a0(f1_0, Sel, limit); Trs trs1(f1_0, ResLim, OutFStub); not n0(OutFStub1, OutFStub); xor x0(x0_0, OutFStub1, Sel2); //bufif1 bf1(InFillsin, InFStub1, InFStub); bufif1 bf2(OutFillsin, InFillsin, x0_0); and an0(an0_0, trs0_0, Unit); and an1(an1_0, trs0_0, Zero); Trs trs2(an0_0, an1_0, trs2_0); and an2(an2_0, sig0, trs2_0); and an3(an3_0, InJamp, an2_0); and an4(MemoriOut, an3_0, StartTact); and an5(an5_0, Sel, Run); bufif1 bf3(InJamp, an5_0, an5_0); Trs trs3(Set, MemoriOut, sig0); xor x1(x1_0, trs2_0, sig0); //bufif1 bf4(InJamp, InStub1, InStub1); and an6(an6_0, x1_0, x0_0); not n1(OutStub1, an6_0); bufif1 bf5(OutJamp, InJamp, an6_0); and an7(Finish, MemoriOut, OutFStub); endmodule /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// module MyC (input StartTact, Set, ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, InJamp, InFillsin, InStub1, InFStub, InFStub1, Sel, Sel2, output Finish, OutJamp, OutFillsin, OutStub1, OutFStub, OutFStub1, MemoriOut); wire sig0; bufif1 bf0(InFillsin, Fillsin, Sel); Trs trs0(InFillsin, ResFil, trs0_0); and a0(f1_0, Sel, limit); Trs trs1(f1_0, ResLim, OutFStub); not n0(OutFStub1, OutFStub); xor x0(x0_0, OutFStub1, Sel2); bufif1 bf1(InFillsin, InFStub1, InFStub); bufif1 bf2(OutFillsin, InFillsin, x0_0); and an0(an0_0, trs0_0, Unit); and an1(an1_0, trs0_0, Zero); Trs trs2(an0_0, an1_0, trs2_0); and an2(an2_0, sig0, trs2_0); and an3(an3_0, InJamp, an2_0); and an4(MemoriOut, an3_0, StartTact); and an5(an5_0, Sel, Run); bufif1 bf3(InJamp, an5_0, an5_0); Trs trs3(Set, MemoriOut, sig0); xor x1(x1_0, trs2_0, sig0); bufif1 bf4(InJamp, InStub1, InStub1); and an6(an6_0, x1_0, x0_0); not n1(OutStub1, an6_0); bufif1 bf5(OutJamp, InJamp, an6_0); and an7(Finish, MemoriOut, OutFStub); endmodule ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// module Mych (input StartTact, Set, ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, InJamp, input wire [0:0]se[0:5], output FinishTact, Finish, output wire [0: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 = se; MyC myc(StartTact, Set, ResLim, ResFil, Fillsin, limit, Run, Zero, Unit, ORi, OutFillsi, OutStu1, OutFStu, OutFStu1 ,se[i+1],se, 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 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// module MyTop(); wire [0:0]se1[0:5]; wire [0:0]Mout1[0:5]; //wire []; Mych mych1(,,,,,,,,,,se1,,,); endmodule Нужен пример расключения шины экземляра Mych. Изменено 7 июля пользователем accurate_random Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 7 июля Опубликовано 7 июля · Жалоба Ну что... на вентилятор по новой накидываете ? Азбучные основы цифровой схемотехники для вас явно не авторитетны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
accurate_random 1 7 июля Опубликовано 7 июля (изменено) · Жалоба 2 часа назад, Alex77 сказал: Азбучные основы цифровой схемотехники для вас явно не авторитетны. какое отношение имеет к топик старту? Там экземпляры, а значит verilog, а не схемотехника. Зашли крутить свой вентилятор? Так улетел, если что. Отправляйтесь и вы за ним вслед. Я схему выложил или что? Изменено 7 июля пользователем accurate_random Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex77 4 7 июля Опубликовано 7 июля · Жалоба Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
accurate_random 1 7 июля Опубликовано 7 июля (изменено) · Жалоба 42 минуты назад, Alex77 сказал: да по тематике подходит предыдущего сообщения 3 часа назад, Alex77 сказал: Ну что... на вентилятор по новой ...? Чёткие экспертные ответы, как и наверное всегда на протяжении долгих лет. Ладно, поищем дальше. Тут профиль форума явно другой - спецы по вентиляторам. Вроде сами как-то заявляли дружным коллективом, что схемотехника не имеет отношения к verilog, вот темы А теперь наоборот - verilog то же самое, что и схемотехника, ребята путаются в показаниях. Многолетнее, уже наверное хроническое, переутомление сказывается - тяжёлые условия работы, сопряжённые с вредностью и риском, некачественная пища, плохой сон (мало времени на сон и отдых). Вот показания постоянно и меняются - как результат. Но...думаю, что есть люди вполне привыкшие к таким условиям, может дать им шанс на образование? Люди живущие по правилам - в показаниях не путаются, они просто ответят - знают или нет, без лёгких кратковременных обострений амнезии. Я вот например до сих пор учебник физики помню, не дословно, но ключевые моменты - да, как раз по электроннике. А времени прошло - 35лет что-ли... Где-то так. Да, 35 лет я отработал в тех самых условиях, пусть и прерывая стаж, но не на долго. Изменено 7 июля пользователем accurate_random Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
accurate_random 1 7 июля Опубликовано 7 июля (изменено) · Жалоба Если не в тех условиях, то близких к ним. То-есть со всеми факторами Вас так отягощающими - я так или иначе знаком не по наслышке. Изменено 7 июля пользователем accurate_random Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zversky 19 7 июля Опубликовано 7 июля · Жалоба 6 часов назад, accurate_random сказал: пример расключения шины про какую именно шину вы спрашиваете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ascetic 0 7 июля Опубликовано 7 июля · Жалоба Цитата Не могу понять как это сделать Для начала, начните с первого же модуля Trs. Предполагаю, что в нем Вы пытались реализовать асинхронный RS-триггер. Если так, то у Вас это не получилось. Взгляните что показывает RTL Viewer функциональная симуляция и схема уровня Gowin-примитивов Кстати, на функциональной симуляции показана виртуальная функция Q=~R&S (красный ромбик), которую Вы реализовали в модуле Trs. Кроме того, если уж Вы решили пользоваться структурным (Structural) описанием схемы, то следовало бы ознакомиться с примитивами, используемыми в Gowin IDE, а лучше перейти на поведенческое (Behavioral) описание схемы. К примеру, гораздо проще и понятней выглядит конструкция f1_0 = Sel & limit чем and a0(f1_0, Sel, limit) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 8 июля Опубликовано 8 июля · Жалоба 15 часов назад, accurate_random сказал: Не могу понять как это сделать. Gowin IDE Нужен пример расключения шины экземляра Mych. Если правильно понял нужно wire [0:0]se1[0:5]; передать в модуль Mych mych1(,,,,,,,,,,se1,,,); Во-первых, wire [0:0]se1[0:5]; это неупакованный массив, а неупакованный массив в модуль не передаётся. Во-вторых, непонятен смысл [0:0]. Если [0:0] не нужен, тогда wire [0:0]se1[0:5]; можно переписать на wire [0:5]se1;, а лучше на wire [5:0]se1;. И вот тогда передать его в модуль обычным способом. И не рекомендую использовать позиционное соединение, луче соединять по имени: MyC myc(.StartTact(StartTact), ...); И когда много портов записывать их в столбик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yaahoo 0 15 июля Опубликовано 15 июля · Жалоба On 7/7/2024 at 10:53 AM, accurate_random said: Не могу понять как это сделать. Gowin IDE Вам здесь уже писали, надо начинать с учебников. В прицнипе, понимаю, влезать в новую тему всегда времязатратно и часто лениво. Сам такой же. Единственный раз влез поглубже, и .. минус 5 лет жизни, но + 2 патента и пиашди - в возрасте когда пиашди уже никто не пишет. И никаких перспектив на будущее, поскольку идея оказалась непрактичной/ненужной. Так что понимаю, иногда достаточно пройтись по верхам, получить результат, и закрыть для себя эту тему. Но сильно сомневаюсь, что здесь получится так же. Если кратко, ваш код не синтезируемый. Конструкции верилога делятся (грубо) на два подмножества: синтезируемые, и несинтезируемые. Первые используются только для описания электронных схем с последующим синтезом, вторые для тестбенчей, программирования, того же описания электронных схем, но - синтезированы быть не могут. Теперь предметно. 1. SR latch описан не синтезируемыми конструкциями. Как правильно - гуглите. Вообще побольше гуглите, пример: https://blog.webfpga.io/2019/03/02/sr-latches/ module sr_latch( input wire S, R, output wire Q, Q_not); assign Q = ~(R | Q_not); assign Q_not = ~(S | Q); endmodule И даже если код синтезируемый, ваша ПЛИС должна содержать такие ячейки, поскольку после синтеза делается мэппинг. Я очень сильно сомневаюсь что в ПЛИС имются SR latch. А прямо смэппить в два NOR или NAND скорее всего не выйдет, поскольку с точки зрения STA (Static timing analysis - погуглите) в такой конструкции есть петли/обратные связи, что для большинства тулов неприемлемо. 2. Использование примитивов верилога. Де-факто не-синтезируемые конструкции языка, очень мало тулов это поддерживает. Читайте документацию говин, а еще лучше перепишите Успехов. p.s. Может быть, все же лучше начать с учебника? Почитайте хотя бы Харрисов, там коротко, по делу, и на русском. Можно примеры понадергать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stealthisname 7 15 июля Опубликовано 15 июля · Жалоба 11 часов назад, Yaahoo сказал: И даже если код синтезируемый, ваша ПЛИС должна содержать такие ячейки, поскольку после синтеза делается мэппинг. Я очень сильно сомневаюсь что в ПЛИС имются SR latch. если я правильно понимаю, то в некоторых ПЛИС есть возможность синтезировать и сделать мэппинг для latch у xilinx это LDCE: Transparent Latch with Clock Enable and Asynchronous Clear LDPE: Transparent Latch with Clock Enable and Asynchronous Preset для примера, можно проверить, как именно синтезируется RS latch module RS_latch ( input S, input R, output reg Q ); initial Q = 0; always @(*) begin if (S==1) Q=1; if (R==1) Q=0; end endmodule результат синтеза: синтезировалось в LDCE если поменять приоритет входных портов в описании, то синтезируется уже в LDPE module RS_latch ( input S, input R, output reg Q ); initial Q = 0; always @(*) begin if (R==1) Q=0; if (S==1) Q=1; end endmodule результат синтеза: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
accurate_random 1 9 августа Опубликовано 9 августа (изменено) · Жалоба сам разобрался со всем этим. Качество учебников - книг, весьма удручающее, но лучше так, чем никак. Складывается впечатление, что их писали так, чтобы потом спрашивали (неуместные в конкретной части книги описания, оторванные от логики, или так - конкретная предметная область, не маловажная - разбросана кусками по книге), в целом складывается впечатление - чтобы не думали, а спрашивали, то есть - смысловая нагрузка ниже заявляемого в рекламе уровня: покупаешь и понимаешь что купил кусочек мозайки, и тот, который ещё и раздробили мелко-мелко и сложили как попало. Сейчас исправляю небольшие ошибки в совей глобальной схеме - плохо сделал загрузчик задания автомата и лаунчер. Изменено 9 августа пользователем accurate_random Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться