Проблема Verilog с оператором case / always

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

module ledSwitch(LEDR, SW);
    input [9:0] SW; //switches and led
    output [0] LEDR;
 
    mux7to1 u0(
        .s0(SW[0]),//input switches to mux
        .s1(SW[1]),
        .s2(SW[2]),
        .s3(SW[3]),
        .s4(SW[4]),
        .s5(SW[5]),
        .s6(SW[6]),
        .s7(SW[7]),
        .s8(SW[8]),
        .s9(SW[9]),
        //.inputs([SW[0], [SW[1], [SW[2], [SW[3], [SW[4], [SW[5], [SW[6]])
        //.muxSelect([SW[7], [SW[8], [SW[9])
        .l(LEDR[0]) //input led output to mux
        );
endmodule

module mux7to1(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, l);
    input s0;
    input s1;
    input s2;
    input s3;
    input s4;
    input s5;
    input s6;
    input s7;
    input s8;
    input s9;
    //input inputs[6:0]
    //input muxSelect[2:0]

    output l;

    reg Out; //declare the output signal for the always block

    always@(*) //declare always block
    begin
        case ([s9, s8, s7])//muxSelect[2:0] //start case statement
            3'b000: Out = s0; //case 0, A
            3'b001: Out = s3; //case 1, D
            3'b010: Out = s1; //case 2, B
            3'b011: Out = s5 //case 3, F
            3'b100: Out = s0; //case 4, A
            3'b101: Out = s4; //case 5, E
            3'b110: Out = s2; //case 6, C
            3'b111: Out = s6; //case 7, G
            default: Out = 0; //Default        
        endcase
    end
    assign l = Out;
endmodule

Вот сообщение об ошибке:

Информация: ************************************************ *******************

Информация: Запуск 64-битного анализа и синтеза Quartus II

Информация: Версия 15.0.0, сборка 145, 22.04.2015 SJ Web Edition

Информация: Началась обработка: Вт 2 фев 14:53:06 2016

Информация: Команда: quartus_map --read_settings_files = on --write_settings_files = off Lab2_1 -c Lab2_1

Предупреждение (20028): параллельная компиляция не лицензируется и отключена

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (43) рядом с текстом [; ожидая операнда

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (45) рядом с текстом 3; ожидая конца

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (46) рядом с текстом 3; ожидая конца

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (47) рядом с текстом 3; ожидая конца

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (48) рядом с текстом 3; ожидая;

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (49) рядом с текстом 3; ожидая конца

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (50) рядом с текстом 3; ожидая конца

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (51) рядом с текстом 3; ожидая конца

Ошибка (10170): синтаксическая ошибка Verilog HDL на Lab2_1.v (52) рядом с текстом по умолчанию; ожидая конца

Ошибка (10170): синтаксическая ошибка Verilog HDL в Lab2_1.v (53) рядом с конечным регистром текста; ожидая конца

Ошибка (10112): проигнорированная единица проектирования mux7to1 в Lab2_1.v (24) из-за предыдущих ошибок

Информация (12021): в исходном файле Lab2_1.v найдено 0 проектных единиц, включая 0 сущностей.

Ошибка: 64-битный анализ и синтез Quartus II завершился неудачно. 11 ошибок, 1 предупреждение

Ошибка: пиковая виртуальная память: 959 мегабайт

Ошибка: Обработка завершена: 2 февраля, вторник, 14:53:23, 2016 г.

Ошибка: Истекшее время: 00:00:17

Ошибка: Общее время ЦП (на всех процессорах): 00:00:51

Ошибка (293001): Полная компиляция Quartus II завершилась неудачно. 13 ошибок, 1 предупреждение


person AAA    schedule 02.02.2016    source источник


Ответы (1)


Вам необходимо использовать оператор конкатенации: case ({s9, s8, s7})

Также у вас есть несколько синтаксических ошибок, таких как отсутствие точек с запятой, которые вам необходимо исправить.

Наконец, в модуле ledSwitch вам нужно правильно определить выход.

person DBB    schedule 02.02.2016