WedX - журнал о программировании и компьютерных науках

Я не могу индексировать ошибку, не связанную с массивом, хотя я объявил переменную 4 бита. Использование Vivado для программирования NEXYS 4

Я новичок в кодировании Verilog, поэтому любая помощь приветствуется.

В моем верхнем модуле я вызываю три модуля. Медленные часы замедляют часы на борту до видимой скорости. Счетчик считает до 9, а затем сбрасывает на 0. Другой отображает число, которое выдает модуль счетчика.

Мои ошибки следующие:

[Synth 8-1751] cannot index into non-array count1 
[Synth 8-1751] cannot index into non-array count1
[Synth 8-1751] cannot index into non-array count1
[Synth 8-1751] cannot index into non-array count1

Мой код:

module Clock(
output [7:0] SSEG_AN,
output [7:0] SSEG_CA,
input CLK
);

wire [3:0] count;

slowclock slwclk(CLK,Clk_Slow);

counterten sec(Clk_Slow,rc,count1);

displaycounter display(count, SSEG_AN, SSEG_CA, CLK);

assign count[0]=count1[0];
assign count[1]=count1[1];
assign count[2]=count1[2];
assign count[3]=count1[3];
endmodule

module slowclock (clk,Clk_Slow);
input clk;
output reg Clk_Slow = 0;
reg [31:0] counter_out = 32'h00000000;

always @(posedge clk) begin
    counter_out <= counter_out + 32'h00000001; 
    if (counter_out  > 32'h02F5E100) begin
        Clk_Slow <= ~Clk_Slow;
        counter_out<= 32'h00000000;
    end
end
endmodule

module counterten(
input clk,
output reg rc,
output [3:0] count
);

reg [3:0] tmp = 4'b0000;

always @(posedge clk) begin
    if (tmp == 9) begin
        rc = 1;
        tmp = 4'b0000;
    end
    else begin
        tmp = tmp + 4'b0001;
        rc = 0;
    end
end

assign count = tmp;

endmodule

module displaycounter (count, SSEG_AN, SSEG_CA, CLK);
output reg [7:0] SSEG_AN;
output reg [7:0] SSEG_CA;
input [3:0] count;
input CLK;

always @(negedge CLK) begin
        SSEG_AN = 8'b11111110;
        case(count)
            4'b0000: SSEG_CA = 8'b11000000; //0
            4'b0001: SSEG_CA = 8'b11111001; //1
            4'b0010: SSEG_CA = 8'b10100100; //2
            4'b0011: SSEG_CA = 8'b10110000; //3
            4'b0100: SSEG_CA = 8'b10011001; //4
            4'b0101: SSEG_CA = 8'b10010010; //5
            4'b0110: SSEG_CA = 8'b10000010; //6
            4'b0111: SSEG_CA = 8'b11111000; //7
            4'b1000: SSEG_CA = 8'b10000000; //8
            4'b1001: SSEG_CA = 8'b10010000; //9
            default: SSEG_CA = 8'b11111111; //default all off
        endcase
end

endmodule
10.12.2014

Ответы:


1

Вы объявили count 4 бита с помощью wire [3:0] count;, но ошибка касается количества 1. Поскольку это не объявлено, он создается как 1-битный провод.

Просто добавьте wire [3:0] count1; в модуль верхнего уровня Clock

10.12.2014
  • Поскольку так часто забывают объявить переменную или делают опечатку, что приводит к предполагаемой 1-битной сети для имени, которое часто не то, что вы хотите, я предлагаю всегда использовать '`default_nettype none' в верхней части ваших файлов. . Таким образом, вы сообщаете компилятору/инструменту синтеза, чтобы он не выполнял этот 1-битный сетевой вывод и вместо этого выдавал ошибку для нераспознанных имен. 10.12.2014
  • Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]