1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Dúvida Verilog

Discussão em 'Programação' iniciada por redshot, 4 de Dezembro de 2008. (Respostas: 2; Visualizações: 708)

  1. redshot

    redshot Electromoderator
    Staff Member

    Boas, tenho aqui uma dúvida em Verilog.

    O que acontece é que eu tenho isto:
    Código:
    output [7:0] R;
    wire W0, W1 (...) W7;
    
    e queria ligar cada fio (W0, W1, etc) a cada R. Neste momento estou com isto, mas não sei se está certo:

    Código:
    assign {W0, W1, (...), W7} = R
    Como é que faço isso?

    CUmps
     
  2. Granadafeup

    Granadafeup Power Member

    Acho que é assim

    assign R = {w7, w6, w5, w4,...,w0};

    Já não mexo nisto a uns tempos, mas deve funcionar. Ja deves saber mas tem cuidado com a ordem que declaras as coisas. Como está o w7 é o MSB e w0 é o LSB
     
  3. redshot

    redshot Electromoderator
    Staff Member

    ALU - Arithmetic Logic Unit

    Boas, afinal eu é que percebi mal o enunciado. O objectivo era fazer uma ALU, e cada fio era de 8 bits, e não de 1 bit. Esses fios iam ligar depois a um multiplexador. De qualquer maneira, lá fiz aquilo, de outra maneira, mas certo à mesma. Fica aqui o código, para quem quiser (foi testado numa FPGA Spartan 3. Pode estar incompleto porque não sei se acrescentei mais coisas na aula):

    Código:
    module main (OPR, A, B, R);
    input [2:0] OPR;
    input [7:0] A, B;
    output [7:0] R;
    
    always @*
    begin
    [INDENT]case (OPR)
    [INDENT]3'b000 : R = B;
    3'b001 : R = A - B;
    3'b010 : R = A + B;
    3'b011 : R = A ^ B;
    3'b100 : R = A >> B;
    3'b101 : R = A << B;
    3'b110 : R = A & B;
    3'b111 : R = A | B;[/INDENT]
    endcase[/INDENT]
    
    endmodule
    Em que o A e B são os operandos de 8 bits, R é o resultado de 8 bits, e OPR é a operação (subtracção, soma, etc).

    Ainda falta outra parte do código, as Flags (se R é 0, se dá overflow, etc).

    Cumps
     

Partilhar esta Página