T
toffee_pie
Guest
pozdrav svima,
može bilo tko uz pomoć mene verilog vještina provoditi ovaj ALU, želim najprije dobiti osnovne operacije funkcioniranje prije nego što sam premjestiti na teže zadatke.
To navika kompajlirati, Ja sam uzimajući greška sa endmodule dio?isto tako moram još reg pohraniti preljev malo i raditi izvan potpisani i nepotpisani izlazi?/ / VERILOG CODE/ / 'Rokove 10ns
modul ALU (a, b, Cin, op, CLK, resetb, C [S 15:0], e, ov)izlaz potpisan C [S 15:0]; / / 2 je kompliment potpisao 16 riječi bit output
output ov; / / Rezultat je zbrajanje ili oduzimanje
/ / Pretpostavlja da stane
/ / Unutar značajnih bitova se koristi za predstavljanje brojeva.
/ / Ako je 'n' bitova se koristi za predstavljanje potpisan brojeva
/ / In 2's komplement
/ / Shema, onda rezultat mora biti u rasponu
/ /-2n-1 do 2n-1-1.
/ / Ako je rezultat ne stane u tom rasponu, a zatim aritmetičke
/ / Overflow došlo, ovo se koristi za operacije potpisan.CLK ulaz, resetb; / / sat sustava @ 100MHz, sinkroni
/ / Ponovno postavljanje sustava aktivne niske
input [2:0] Op; / / ALU dodjeljuje jedan od svojih 8 operand Instrukcije
input [15:0], b; / / nepotpisani 16 bit input operanda na ALU
Cin ulaz, S; / / Carry u, zbroj u/ / Unutarnjih čvorova
žice [15:0], b;
reg potpisan [15:0] c; / / izlaz reg
reg s potpisan;
reg potpisan ov;parametar WIDTH = 'D16;
parametar ADD_AB = 3'b000; / / dodatak -> c = a b
parametar SUB_AB = 3'b001; / / oduzimanje -> c = a - b
parametar MUL_AB = 3'b010; / / množenja -> c = a * b
parametar AND_AB = 3'b011; / / i -> c & b =
parametar OR_AB = 3'b100; / / ili -> c = a | b
parametar XOR_AB = 3'b101; / / xor -> c = a ^ b
parametar SHIFT_LEFT_A = 3'b110; / / pomak ulijevo -> c =>> 1
parametar SHIFT_RIGHT_A = 3'b111; / / pomak desno -> c = b>> 1Uvijek @ (ili b ili op) begin
/ / Lets do Aritmetičke operacije
započeti
if (op [2:1] == 2'b00) počinju
case (op [2:0])
3'b000: c = a b; / / dodatak
3'b001: c = a - b; / / oduzimanje
/ / 3'b010: c = a * b; / /
default: c = 16'bx;
endcase
/ / overflow = c [15] ^ c [14];
kraj/ / Lets do Logičke operacije
else if (op [2:1] == 2'b01) počinju
case (op [2:0])
3'b011: c = a & b; / / logičke i
3'b100: c = a | b; / / logičke ili
3'b111: c = a ^ b; / / logičan EXOR
default: c = 16'bx;endcase
endmodule
Last edited by toffee_pie na 01 Nov 2009 23:15, edited 3 times in total
može bilo tko uz pomoć mene verilog vještina provoditi ovaj ALU, želim najprije dobiti osnovne operacije funkcioniranje prije nego što sam premjestiti na teže zadatke.
To navika kompajlirati, Ja sam uzimajući greška sa endmodule dio?isto tako moram još reg pohraniti preljev malo i raditi izvan potpisani i nepotpisani izlazi?/ / VERILOG CODE/ / 'Rokove 10ns
modul ALU (a, b, Cin, op, CLK, resetb, C [S 15:0], e, ov)izlaz potpisan C [S 15:0]; / / 2 je kompliment potpisao 16 riječi bit output
output ov; / / Rezultat je zbrajanje ili oduzimanje
/ / Pretpostavlja da stane
/ / Unutar značajnih bitova se koristi za predstavljanje brojeva.
/ / Ako je 'n' bitova se koristi za predstavljanje potpisan brojeva
/ / In 2's komplement
/ / Shema, onda rezultat mora biti u rasponu
/ /-2n-1 do 2n-1-1.
/ / Ako je rezultat ne stane u tom rasponu, a zatim aritmetičke
/ / Overflow došlo, ovo se koristi za operacije potpisan.CLK ulaz, resetb; / / sat sustava @ 100MHz, sinkroni
/ / Ponovno postavljanje sustava aktivne niske
input [2:0] Op; / / ALU dodjeljuje jedan od svojih 8 operand Instrukcije
input [15:0], b; / / nepotpisani 16 bit input operanda na ALU
Cin ulaz, S; / / Carry u, zbroj u/ / Unutarnjih čvorova
žice [15:0], b;
reg potpisan [15:0] c; / / izlaz reg
reg s potpisan;
reg potpisan ov;parametar WIDTH = 'D16;
parametar ADD_AB = 3'b000; / / dodatak -> c = a b
parametar SUB_AB = 3'b001; / / oduzimanje -> c = a - b
parametar MUL_AB = 3'b010; / / množenja -> c = a * b
parametar AND_AB = 3'b011; / / i -> c & b =
parametar OR_AB = 3'b100; / / ili -> c = a | b
parametar XOR_AB = 3'b101; / / xor -> c = a ^ b
parametar SHIFT_LEFT_A = 3'b110; / / pomak ulijevo -> c =>> 1
parametar SHIFT_RIGHT_A = 3'b111; / / pomak desno -> c = b>> 1Uvijek @ (ili b ili op) begin
/ / Lets do Aritmetičke operacije
započeti
if (op [2:1] == 2'b00) počinju
case (op [2:0])
3'b000: c = a b; / / dodatak
3'b001: c = a - b; / / oduzimanje
/ / 3'b010: c = a * b; / /
default: c = 16'bx;
endcase
/ / overflow = c [15] ^ c [14];
kraj/ / Lets do Logičke operacije
else if (op [2:1] == 2'b01) počinju
case (op [2:0])
3'b011: c = a & b; / / logičke i
3'b100: c = a | b; / / logičke ili
3'b111: c = a ^ b; / / logičan EXOR
default: c = 16'bx;endcase
endmodule
Last edited by toffee_pie na 01 Nov 2009 23:15, edited 3 times in total