Перейти к содержанию
    

Подключить сигналы к входящей шине экземпляра.

Не могу понять как это сделать. 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.

 

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну что... на вентилятор по новой накидываете ?

Азбучные основы цифровой схемотехники для вас явно не авторитетны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Alex77 сказал:

Азбучные основы цифровой схемотехники для вас явно не авторитетны.

какое отношение имеет к топик старту? Там экземпляры, а значит verilog, а не схемотехника. Зашли крутить свой вентилятор? Так улетел, если что. Отправляйтесь и вы за ним вслед. Я схему выложил или что?

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 минуты назад, Alex77 сказал:

:dash1:

да по тематике подходит предыдущего сообщения

3 часа назад, Alex77 сказал:

Ну что... на вентилятор по новой ...?

 

Чёткие экспертные ответы, как и наверное всегда на протяжении долгих лет. Ладно, поищем дальше. Тут профиль форума явно другой - спецы по вентиляторам.

Вроде сами как-то заявляли дружным коллективом, что схемотехника не имеет отношения к verilog, вот темы

А теперь наоборот - verilog то же самое, что и схемотехника, ребята путаются в показаниях. Многолетнее, уже наверное хроническое, переутомление сказывается - тяжёлые условия работы, сопряжённые с вредностью и риском, некачественная пища, плохой сон (мало времени на сон и отдых). Вот показания постоянно и меняются - как результат. Но...думаю, что есть люди вполне привыкшие к таким условиям, может дать им шанс на образование? Люди живущие по правилам - в показаниях не путаются, они просто ответят - знают или нет, без лёгких  кратковременных обострений амнезии. Я вот например до сих пор учебник физики помню, не дословно, но ключевые моменты - да, как раз по электроннике. А времени прошло - 35лет что-ли... Где-то так. Да, 35 лет я отработал в тех самых условиях, пусть и прерывая стаж, но не на долго.

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не в тех условиях, то близких к ним. То-есть со всеми факторами Вас так отягощающими - я так или иначе знаком не по наслышке.

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, accurate_random сказал:

пример расключения шины

про какую именно шину вы спрашиваете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цитата

Не могу понять как это сделать

Для начала, начните с первого же модуля Trs.
Предполагаю, что в нем Вы пытались реализовать асинхронный RS-триггер. Если так, то у Вас это не получилось.
Взгляните что показывает RTL Viewer

Sch_RTL.jpg.231570cad6a62457b0ab8db63107f588.jpg

функциональная симуляция

simF.thumb.jpg.6cf9a53ffb1a327ae5f66e1c875eefb5.jpg

и схема уровня Gowin-примитивов

Sch_PRIM.thumb.jpg.12fb6c660c184cbace2ed1a23044fd75.jpg
Кстати, на функциональной симуляции показана виртуальная функция Q=~R&S (красный ромбик), которую Вы реализовали в модуле Trs.
Кроме того, если уж Вы решили пользоваться структурным (Structural) описанием схемы, то следовало бы ознакомиться с примитивами, используемыми в Gowin IDE, а лучше перейти на поведенческое (Behavioral) описание схемы.
К примеру, гораздо проще и понятней выглядит конструкция

f1_0 = Sel & limit

чем
 

and a0(f1_0, Sel, limit)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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), ...);

И когда много портов записывать их в столбик.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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. Может быть, все же лучше начать с учебника? Почитайте хотя бы Харрисов, там коротко, по делу, и на русском. Можно примеры понадергать

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

результат синтеза:

image.thumb.png.d5727780a385442d88c5fe2746df7ae4.png

синтезировалось в 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

результат синтеза:

image.thumb.png.5bbb596805a3a1471156ddc201156d71.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сам разобрался со всем этим. Качество учебников - книг, весьма удручающее, но лучше так, чем никак. Складывается впечатление, что их писали так, чтобы потом спрашивали (неуместные в конкретной части книги описания, оторванные от логики, или так - конкретная предметная область, не маловажная - разбросана кусками по книге), в целом складывается впечатление - чтобы не думали, а спрашивали, то есть - смысловая нагрузка ниже заявляемого в рекламе уровня: покупаешь и понимаешь что купил кусочек мозайки, и тот, который ещё и раздробили мелко-мелко и сложили как попало.

Сейчас исправляю небольшие ошибки в совей глобальной схеме - плохо сделал загрузчик задания автомата и лаунчер.

Изменено пользователем accurate_random

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...