2015-12-07 6 views
2

Я новичок в xilinx, поэтому, пожалуйста, извините любые глупости в коде.Входной выход для 8-битного ALU с использованием платы FPGA

Ах, так что я пытаюсь разработать 8-разрядное АЛУ и модуль прекрасно работает по моделированию, но мы должны принять входы и выходы на дисплей FPGA платы.

Технически я использовал RS-232, но так как мы просто имеем 8-битовый вход и 8 переключателей доступны, мы стараемся, чтобы закодировать это таким образом.

Однако код не компилируется и дает ошибку "expecting 'endmodule', found 'forever'".

Я использовал 'forever', а не 'always', потому что всегда не допускает экземпляра экземпляра внутри него.

Может кто-нибудь, пожалуйста, помогите нам выяснить, что не так с кодом?

module main(out,in,switch); 
output [7:0] out; 
input [7:0] in; 
input switch; 
reg [7:0] a,b,select; 
reg [1:0] count; 
wire eq, comp, C8; 
initial 
begin 
count = 2'b00; 
select = 8'b0000_0000; 
end 
MyALU A(eq, comp, C8, out, a, b, 1'b0, select[0], select[1], select[2], select[3]); 


forever 
begin 
if (switch) 
    begin 
     case (count) 
     00: 
      begin 
      a = in; 
      count = 2'b01; 
      end 
     01: 
      begin 
      b = in; 
      count = 2'b10; 
      end  
     10: 
      begin 
      select = in; 
      A(eq, comp, C8, out, a, b, 1'b0, select[0], select[1], select[2], select[3]); 
      count = 2'b00; 
      end 
     default 
      a = in; 
     endcase   
    end 
end 
+0

Петли внутри verilog должны быть внутри некоторого процедурного блока. Используйте 'initial' перед' forever'. Или удалите 'forever' и используйте' always @ (*) 'более тонкий путь. 'endmodule' отсутствует здесь. – sharvil111

+0

Создание экземпляра модуля просто вне любого процедурного блока. Если требуется несколько экземпляров (это не так), используйте блок 'generate'. – sharvil111

ответ

1

Каждый модуль в verilog должен заканчиваться линией endmodule. Этого не хватает в коде. И попробуйте использовать [email protected](*) вместо forever. forever не синтезируется и используется только для проверки с помощью моделирования.

0
  1. Заменить заявление forever на номер always @(*).
  2. Удалите эту строку из саза: A(eq, comp, C8, out, a, b, 1'b0, select[0], select[1], select[2], select[3]);
  3. Добавить endmodule в конце.