398 / 132 / 3
Регистрация: 25.01.2012
Сообщений: 5,689
Записей в блоге: 130
1

Должны по очереди загораться и гаснуть диоды. Но увы - они загораются все

06.08.2024, 22:48. Показов 881. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Счётчик
Код
module MyCount
(input clk, sens, output led);
reg [25:0] count =1;
reg led_reg = 1;
assign led = led_reg;
wire sens1;
assign sens1 = sens; 
always @ (posedge clk)
begin
if (sens1 == 1) begin
led_reg = 0;
 count = count +1;
if (count == 50000000) begin
count <= 1;
//led_reg = ~ led_reg;
end
led_reg = 1;
//count =1;
end
end
endmodule
По идее код написан так, что должны по очереди загораться и гаснуть диоды. Но увы - они загораются все. Один закомментировал - тогда он перестал гореть. Но никаких таких пауз нет. Нет случайно ни у кого симулятора, проверить это? Чувствую - где-то что-то неправильно сделал, но что - не пойму...первое предположение - счётчик или неправильно реализовал или подключил в общей схеме, второе - он просто не работает как надо, третье - не хватает времени для сброса горения предыдущего диода. Да...без симулятора - совсем плохо, но не писать-же его самому?
Код тут
Кликните здесь для просмотра всего текста
Код
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, x1_0);
bufif1 bf5(OutJamp, InJamp, an6_0);
and an7(Finish,  MemoriOut, OutFStub);
endmodule

module MyCount
(input clk, sens, output led);
reg [25:0] count =1;
reg led_reg = 1;
assign led = led_reg;
wire sens1;
assign sens1 = sens; 
always @ (posedge clk)
begin
if (sens1 == 1) begin
led_reg = 0;
 count = count +1;
if (count == 50000000) begin
count <= 1;
//led_reg = ~ led_reg;
end
led_reg = 1;
//count =1;
end
end
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
//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

module Mych(input clk, output reg [5:0] led);
wire  [0:0]se[0:5];
wire [0:0]ActivMemo[0:5];
wire Start0,Start, Start1,  Set, Fillsin1, EndFillsin, StartTact1;
wire Finish, FinishTact, Unit,InJamp, StartTact;
wire sens, led;
wire limit0;
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, Fillsin1, limit0, Run, Zero, Unit,InJamp,,,,
,Fillsin1,,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
MyC myc(StartTact, Set,  ResLim, ResFil, Fillsin, limit0, 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
assign se[5] = Start;
assign limit0 = Start;
//bufif1 bf0Mych(se[5], Start, Start);
Trs trs_Finish(Finish,Set,trs_Finish0);
bufif1 bf1Mych(Set, trs_Finish0, trs_Finish0);
Trs trs_Start(Start1,,Start0);
not n_1(Start, Start0);
buf buf1(Start1,Start);
//Trs trs_Start(Start1,,Start0);
Trs trs_Boot(Start0,EndFillsin,Fillsin1);
buf buf2(EndFillsin,Fillsin1);
Trs trs_Load(EndFillsin,Set,Unit);
bufif1 bf2(Set, Unit, Unit);
//bufif1 bf3(FinishTact, Set, Set);
Trs trs_FinishTact(FinishTact ,StartTact1,ControlTact0);
//Trs trs_OnLed0(ActivMemo[0],StartTact1,OnLed0);
//Trs trs_OnLed1(ActivMemo[1],StartTact1,OnLed1);
//Trs trs_OnLed2(ActivMemo[2],StartTact1,OnLed2);
//Trs trs_OnLed3(ActivMemo[3],StartTact1,OnLed3);
//Trs trs_OnLed4(ActivMemo[4],StartTact1,OnLed4);
//Trs trs_OnLed5(ActivMemo[5],StartTact1,OnLed5);
xor Mych0(ControlTact, ControlTact0, trs_Finish0);
MyCount MyCt(clk, ControlTact, StartTact1);
Trs trs_StartTact1(StartTact1,StartTact,StartTact2);
Trs trs_StartTact2(StartTact2,StartTact,StartTact3);
Trs trs_StartTact3(StartTact3,StartTact,StartTact4);
Trs trs_StartTact4(StartTact4,StartTact,StartTact5);
Trs trs_StartTact5(StartTact5,StartTact1,StartTact);
assign led[0] = ActivMemo [0];
assign led[1] = ActivMemo [1];
//assign led[2] = ActivMemo [2];
assign led[3] = ActivMemo [3];
assign led[4] = ActivMemo [4];
assign led[5] = ActivMemo [5]; 
endmodule

есть много закомментироавнных строк, не помню их ценности, решил не убирать, если что сорян за них. Закомментированный диод - в самом конце, это единчтвенная актуальная закомментированная строка - остальные не важны, или важны чисто для меня, и то мне вспоминать надо что за модификации я проводил.

Добавлено через 1 час 47 минут
Тему переименовали. Разберусь, думаю, сам.

Добавлено через 37 минут
Код
output reg [5:0] led
переменная объявляется регистрового типа, значит как-то надо сбрасывать...или нет... тут вобщем-то всё происходит вроде как - при объявлении переменных. Это должен быть не регистровый тип, а тип провода. По логике - вроде так, больше там ошибиться вроде как негде, компоненты отрепитированы в симуляторе, а схема не настолько сложна чтобы допустить ошибку...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2024, 22:48
Ответы с готовыми решениями:

при подключении 2х мониторов они начинают гаснуть и заново включатсья
Видеоадаптер Radeon RX 570 Series (4 ГБ) Тип ЦП QuadCore AMD FX-4300 блок питания на 600ватт...

Волна: Светодиоды по очереди загораются снизу вверх
Светодиоды по очереди загораются снизу вверх с выдержкой времени 0,2 - 0,3с, затем все гаснут и так...

При включении красным по очереди загораются DRAM LED, VGA LED, BOOT DEVICE LED. При этом все работает
Всем привет! Материнская плата ASUS P7P55D-E, при включении пк загораются красным по очереди DRAM...

Очереди. Дан массив. Создать две очереди, первая должна содержать все нечетные, а вторая - все четные
Очереди. Дан массив. Создать две очереди, первая должна содержать все нечетные, а вторая - все...

Сма Electrolux EWS 1020 914756503|01, Загораются все светодиоды
Был на заявке, поменял щетки на двигателе, после через день звонят и жалуются что не запускается,...

7
36 / 33 / 9
Регистрация: 12.12.2020
Сообщений: 330
06.08.2024, 22:54 2
Переменная count вообще может досчитать до такой величины? Переполнения нет?
0
398 / 132 / 3
Регистрация: 25.01.2012
Сообщений: 5,689
Записей в блоге: 130
07.08.2024, 08:52  [ТС] 3
То, что с счётчиком не ладное - это одно, я исправлю или вообще заменю счётчик на другой, так, как например в примере что у меня совсем другой счётчик и он вроде более подходящ. Проблема вроде как и с переменными - диоды загораются сразу все.
Цитата Сообщение от Alex1126 Посмотреть сообщение
Переменная count вообще может досчитать до такой величины? Переполнения нет?
спасибо, я посмотрю, дело в том, что делалось всё урывками, и возможно выпало их памяти, хотя по коду видно, что с счётчиком что-то не то.

Добавлено через 10 минут
Не уверен, но разве тут при равенстве пятидесяти тысячам не сбрасывается до нуля?
Код
if (count == 50000000) begin
count <= 1;
//led_reg = ~ led_reg;
end
К тому-же странно, что они загораются все сразу...тут явно что-то не то с проводами...в смысле с переменными. Поведение такое схемы, что все провода замкнуты на один контакт.

Причём это
Код
module Mych(input clk, output wire [5:0] led);
ничего не дало, что регистровый тип, что тип "провод".

Добавлено через 6 минут
Второй пример с счётчиком вообще для меня тёмный лес, так как о этой строке и её назначении - мне вообще ничего не известно, вроде как
Код
        led[5:0] <= {led[4:0],led[5]};
.
Сам пример выглядит так
Код
module led (
    input sys_clk,          // clk input
    input sys_rst_n,        // reset input
    output reg [5:0] led    // 6 LEDS pin
);

reg [23:0] counter;

always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        counter <= 24'd0;
    else if (counter < 24'd1349_9999)       // 0.5s delay
        counter <= counter + 1'b1;
    else
        counter <= 24'd0;
end

always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        led <= 6'b111110;
    else if (counter == 24'd1349_9999)       // 0.5s delay
        led[5:0] <= {led[4:0],led[5]};
    else
        led <= led;
end

endmodule
. Да и в таком представлении чисел, я, честно говоря, "плаваю", так как пользовался мало, и чтобы изучить и привыкнуть нужно время, а чтобы не забыть - частое использование.

Добавлено через 11 минут
Попробовал так
Код
module Mych(input clk, output wire [0:5] led);
- результат не изменен. Поведение такое, что все провода замкнуты на один контакт.
И только в сообщении в консоли всё лучше, чем в примерах на Хабре, но как я этого добился - сказать не могу(да и как то - моя ли это заслуга), так как изменял права доступа к USB девайсу и прописывал правила.
$ openFPGALoader -b tangnano9k MyCell2.fs
empty
Jtag frequency : requested 6.00MHz -> real 6.00MHz
Parse file Parse MyCell2.fs:
Done
DONE
Load SRAM: [==================================================] 100.00%
Done
DONE
CRC check: Success
В примерах у них есть такое - кабель не видит, но прошивку в конце-концов загружает в плату.
Добавлено через 16 минут
А так - пины назначены в Floor Planer как и тут
https://wiki.sipeed.com/hardwa... s/led.html

Добавлено через 36 минут
Они, вообще, и на схеме при подключении этого массива проводов на диоды стали выглядеть как замкнутые провода на один контакт. Как выглядят, так и работают.

Добавлено через 16 минут
И только такой код приводит схему в должный вид
Кликните здесь для просмотра всего текста
Код
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, x1_0);
bufif1 bf5(OutJamp, InJamp, an6_0);
and an7(Finish,  MemoriOut, OutFStub);
endmodule

module MyCount
(input clk, sens, output led);
reg [25:0] count =1;
reg led_reg = 1;
assign led = led_reg;
wire sens1;
assign sens1 = sens; 
always @ (posedge clk)
begin
if (sens1 == 1) begin
led_reg = 0;
 count = count +1;
if (count == 50000000) begin
count <= 1;
//led_reg = ~ led_reg;
end
led_reg = 1;
//count =1;
end
end
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
//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

module Mych(input clk, output wire led0,led1, led2,led3,led4,led5);
wire  [0:0]se[0:5];
wire [0:0]ActivMemo[0:5];
wire Start0,Start, Start1,  Set, Fillsin1, EndFillsin, StartTact1;
wire Finish, FinishTact, Unit,InJamp, StartTact;
wire sens, led;
wire limit0;
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, Fillsin1, limit0, Run, Zero, Unit,InJamp,,,,
,Fillsin1,,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
MyC myc(StartTact, Set,  ResLim, ResFil, Fillsin, limit0, 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
assign se[5] = Start;
assign limit0 = Start;
//bufif1 bf0Mych(se[5], Start, Start);
Trs trs_Finish(Finish,Set,trs_Finish0);
bufif1 bf1Mych(Set, trs_Finish0, trs_Finish0);
Trs trs_Start(Start1,,Start0);
not n_1(Start, Start0);
buf buf1(Start1,Start);
//Trs trs_Start(Start1,,Start0);
Trs trs_Boot(Start0,EndFillsin,Fillsin1);
buf buf2(EndFillsin,Fillsin1);
Trs trs_Load(EndFillsin,Set,Unit);
bufif1 bf2(Set, Unit, Unit);
//bufif1 bf3(FinishTact, Set, Set);
Trs trs_FinishTact(FinishTact ,StartTact1,ControlTact0);
//Trs trs_OnLed0(ActivMemo[0],StartTact1,OnLed0);
//Trs trs_OnLed1(ActivMemo[1],StartTact1,OnLed1);
//Trs trs_OnLed2(ActivMemo[2],StartTact1,OnLed2);
//Trs trs_OnLed3(ActivMemo[3],StartTact1,OnLed3);
//Trs trs_OnLed4(ActivMemo[4],StartTact1,OnLed4);
//Trs trs_OnLed5(ActivMemo[5],StartTact1,OnLed5);
xor Mych0(ControlTact, ControlTact0, trs_Finish0);
MyCount MyCt(clk, ControlTact, StartTact1);
Trs trs_StartTact1(StartTact1,StartTact,StartTact2);
Trs trs_StartTact2(StartTact2,StartTact,StartTact3);
Trs trs_StartTact3(StartTact3,StartTact,StartTact4);
Trs trs_StartTact4(StartTact4,StartTact,StartTact5);
Trs trs_StartTact5(StartTact5,StartTact1,StartTact);
assign led0 = ActivMemo [0];
assign led1 = ActivMemo [1];
assign led2 = ActivMemo [2];
assign led3 = ActivMemo [3];
assign led4 = ActivMemo [4];
assign led5 = ActivMemo [5]; 
endmodule

но, и это ничего не даёт...они загораются все, хотя все разъеденены электронными ключами на схеме - замыканий нет нигде...
Миниатюры
Должны по очереди загораться и гаснуть диоды. Но увы - они загораются все  
0
398 / 132 / 3
Регистрация: 25.01.2012
Сообщений: 5,689
Записей в блоге: 130
07.08.2024, 11:07  [ТС] 4
Значит что-то с внешней схемой что-то не то, внутренние экземпляры звеньев автомата проверил - там всё нормально вроде. Нужно смотреть расключение управляющих сигналов. Но это было реально только вот в этом виде - когда провода все разомкнуты, а не в упрощённой, как я подозреваю, схеме.

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

Добавлено через 1 час 43 минуты
Между делами разберусь, возможно, что они всё-же быстро мерцают...просто дел ещё всяких куча.

Не по теме:

Наверное прийдётся отказаться от идеи делать бисер для пушки пенообразователя из пластиковых бутылок, проще напечатать на принтере смеситель потоков из трёх частей. Иначе я буду заниматься каким-то непонятным рукоделием, жаль что фен строительный купил, правда недорогой, но всё-же надо было не покупать.

0
398 / 132 / 3
Регистрация: 25.01.2012
Сообщений: 5,689
Записей в блоге: 130
07.08.2024, 21:10  [ТС] 5
Странно, они вообще должны большее время - не гореть, но они горят, да ещё и все вместе. Это вообще противоречит логике самих компонентов - по цепи активации диодов далее возможно прохождение сигнала только в том случае, если содержание одного из двух триггеров равно нулю, и если оба триггера равны единице, то должен мигнуть диод - но это на очень короткий момент, и в один триггер записаться ноль - и только тогда возможна активация следующих диодов...
Очень странный результат прошивки.

Всё это требует явно доработки...

Добавлено через 3 часа 31 минуту
они должны гаснуть, так как загорание следующего, без угасания предыдущего невозможно согласно схемы. Счётчик я тоже пробовал в разных вариантах. Тут я ничего не смогу сделать - раз загораются следующие - должны гаснуть предыдущие, иначе сигнал просто не пройдёт для срабатывания следующих. Значит ошибка не моя, или моя, но с счётчиком. Счётчик пробовал изменять - результат неизменен.
0
398 / 132 / 3
Регистрация: 25.01.2012
Сообщений: 5,689
Записей в блоге: 130
08.08.2024, 08:36  [ТС] 6
Одна из причин - нет контроля над сбросом регистра питания диода, видимо он сбрасывается слишком быстро, а счётчик, который я леплю - не работает корректно. Нужно делать контролируемый сброс и другой счётчик. Остальное, судя по мтоу что свечение всё-же есть у диодов - работает, просто слишком быстро - они не успевают остыть и создается впечатление что они горят все. Другой причины я не вижу - следующий диод не может загореться пока не погаснет предыдущий, так построена схема (точнее так устроены компоненты активации - не пропустят сигнал дальше, пока текущий компонент не перейдёт в состояние дезактивации исполнителя), следовательно они быстро загораются и гаснут.

Добавлено через 59 минут
правка
0
398 / 132 / 3
Регистрация: 25.01.2012
Сообщений: 5,689
Записей в блоге: 130
08.08.2024, 21:20  [ТС] 7
Перестроил схему так, что вообще должен загореться только один из всех и не гаснуть - всё равно все горят. Просто должен зажечься всего один диод, и гореть до поступления сигнала, котрый в схеме отключён - без разницы: горят как заколдованные, все сразу.

Добавлено через 1 час 52 минуты
Это значит, что ничего не работает
Обратите внимание, что кнопки и светодиоды на этой ПЛИС имеют инверсное поведение, то есть значение равно 0, когда кнопка нажата, и 1, когда она не нажата. Аналогично, когда значение равно 0, светодиод включен, а когда значение равно 1, светодиод выключен. Чтобы это исправить, в код Verilog была внесена модификация путем инвертирования значения светодиода по умолчанию.


Код
module LED(
    input btn,
    output reg led = 1
);

    always @(posedge btn) begin
        led <= ~led;
    end
endmodule
Ну уже что-то. Значит загрузчик мой - не работает. Надо переделывать эту часть схемы. Я ещё смотрю - почему во всех версиях примеров просто смена логического значения, а не прямое указание, как-буд-то они боятся что может так, а может этак...ну ладно, английский я не знаю прямо так, чтобы из доки переводить...а - там написано, что диоды низкоуровневые - это встрачалось, но зашифровали в представление числа в системе ...даже не шестнадцатиричной - можно подумать, что эта система прямо таки относитс к переменным типа булевого. Чтобы описать работу диода - не вписали только квантовую механику. Ну наверное в будущем учтут. Как-жеж без неё, это ведь совсем ничего что она не подверждена, главное что уже пишут что даже работу биполярного транзистора без неё ну никак не понять.
0
398 / 132 / 3
Регистрация: 25.01.2012
Сообщений: 5,689
Записей в блоге: 130
09.08.2024, 18:33  [ТС] 8
Хм, когда делал триггеры загрузчика - почему то попутал в последовательности два местами...странно, но факт...
0
09.08.2024, 18:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2024, 18:33
Помогаю со студенческими работами здесь

Кофеварка Saeco Incanto, На экране загораются все верхнии сигменты
Кофеварка Saeco Incanto - примерно через пол часа на экране загораются все верхнии сигменты - на...

Добавляемые мобильные номера не должны повторяться в текущей очереди номеров
Привести приложение в следующее рабочее состояние: Пока приложение работает: - за рандомные...

Кофемашина delonghi magnifika esam4000b ser№23620s02, загораются поочерёдно все нижние светодиоды
Доброй ночи кофе машина delonghi magnifika esam4000b ser№23620s02. В тесте всё делает но после...

Сколько они должны будут отдать денег через К дней?
Молодожены взяли N рублей в организации «Удобные деньги» под 2% в день, Сколько они должны будут...

Враги должны быть отключены, пока они не видны камерой
using System.Collections; using System.Collections.Generic; using UnityEngine; public class...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru