pomoć kod za novorođen ...:)

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

 
sorry nisam pogledati FULL kod još, ali sam primjetiti nekoliko stvari u početku.Ja sam noob previše, tako da nisam siguran koliko ja mogu pomoći, ali:
1) izlaz preljev nije na popisu u IO modula je "osjetljivost lista" (ispričavam se ja zaboraviti imena i želim reći parametar popis kao da je to C).
2) IIRC, 16-bitni ulaz PRIJAVLJENI bi biti nešto poputŠifra:

input [12: -3], b;
 
Hi ya,

hvala za pomoć, da ja razumijem.Sam bio izvjedljiv o extra 'zalogaj' za operaciju nositi ...

<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="Neutralan" border="0" />dva ulaza, b su 'ružan'

izlaz, c je "potpisan".[s 15:0]

znači li to da izlaz je 17 bita?

Imam uključen ov termin za preljeva u deklaracijama.

Želio bih dobiti osnove ide prije nego što sam brinuti o smjeni operacije i množite operand, koji treba ugađati ili 'cijepanje' kao izlaz odgovoriti svibanj premašiti 16 bita.

 
toffee_pie wrote:izlaz, c je "potpisan".
[s 15:0]

znači li to da izlaz je 17 bita?

 
e je da označi potpisan o / pi pretpostaviti ...u verilog sve izjave ružan za propust, tako da morate reći ako su oni potpisali,

pa sam morao reći potpisao za izlaz pustiti ga znati.

kako sam nositi s Regs i skladištenje je još jedna stvar, a ako ne mogu implementirati ovo u jednoj petlji uvijek ....

 
moja stvar je ja dont 'vidjeti bilo koji parametar proglašen pod nazivom' S 'ili znaju za bilo koju ključnu riječ zove' s 'u verilog.

 
ha,

taj točan ...!

c [S 15:0] je izlaz

gdje je e na 2 potpisan kompliment izlaz riječi

tako da mogu biti izvršene na moj broj.

Ja sam ne siguran što radim sa ovom S, i kako sam ga proglasiti?

svoje> 'reg potpisan s' ja bih misliti?

1 bit riječ?ovo je proglašen kao izlaz u reg. ..?

 
I'm sorry I'm not sure I understand svoje pitanje.
se govori da želite bit za predznak?

 
Imam privržen blok Diag mog dizajna.

Ja sam također koristi ažurirani blok konačnog proizvoda kao i originalni propušta van nositi na ulazi i sl.

Promijenio sam broj i, malo s obzirom na luke deklaracije.
Žao nam je, ali morate prijaviti kako biste vidjeli ovaj privitak

 
halo ne, imali priliku gledati na svoj kod, ali (možda ste primijetili da ja stalno radim na nešto objavljeno u ovim forumima za sebe.)
ono što sam učinio iako je tražiti neke informacije za moj projekt i posrnuti na ovo:
http://people.tamu.edu/ ~ rajballavdash/lab_manual_3_4.pdf
tuto za potpisan ALU
sretno

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Osmjeh" border="0" />
 
pa,

Ja sam bio više od kompliciranja moj broj puta previše.I dont potreba bilo koji nose, iznos zastave ili Regs.

Izrada to prekomplicirano za sebe radi.Je izlaz 16 bit riječi, plus 1 bit za 2s komplimentu zalogaj.

[MSB LSB ].................[]

 
nije u rješavanju vašeg problema, ako ne i pustiti mene znati.

 
zdravo

Da, JA je dobio moj kôd radi.dobro ja je dobio Internet synthised na Xilinx ISE

Trebam napraviti test klupa za to sada i imaju problema.

netko pomoć mene sa test klupa za ovo molim?Ran sam ga na više sim i dobio greška veze sa c zalogaj bude kriv veličine i nekoliko drugih stvari spominjanja veličine također netočna.

Imam dva 'c' varijable u moj broj, jedan je c_nx = izlaz iz alu, koji je poslan na ff-a da se vremenski, izlaz za to je stvarna izlazna luka 'C'

pa c_nx nije deklarirana kao izlaz.

bilo tko?modul ALU (a, b, op, CLK, resetb, c);parametar a = 'd1;
izlaz potpisan [S 15:0] c;
reg potpisan [S 15:0] c;input [15:0], b;
input [2:0] op;
ulaz resetb;
CLK ulaz;reg potpisan [S 15:0] c_nx;
/ / izlaz potpisan [S 15:0] c_nx;
/ / Port deklaracijeparametar 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_B = 3'b111; / / pomak desno -> c = b>> 1Uvijek @ (ili b ili op)

slučaj (op)

ADD_AB: c_nx = a b;
SUB_AB: c_nx = a - b;
MUL_AB: c_nx = * b;
AND_AB: c_nx = & b;
OR_AB: c_nx = | b;
XOR_AB: c_nx = a ^ b;
SHIFT_LEFT_A: c_nx =>> 1;
SHIFT_RIGHT_B: c_nx = b>> 1;

endcase

Uvijek @ (posedge CLK)

if (~ resetb)

c <= 0;

drugi

c <= c_nx;

endmodule

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

modul ALU_tb (/ / bez luka, ovaj je testbench
);parametar PRD = 10; / / ns - prema lijevoj argument vremenske rokove direktivi
parametar SIMLEN = 100; / / clks - broj clks za koje pokretanje simulacije

parametar a = 'd1;
parametar WIDTH = 'D16;/ / To ulazi dut su reg vrstereg. CLK, resetb;
reg [15:0] tb_a, tb_b, true_output;
reg [2:0] tb_op;

/ / Izlazi iz dut su žice tip

žica potpisan [15:0] tb_c;

integer i, j, outfile, pat_error;

/ / Instantiate uređaja pod test

ALU my_alu_testbench (. C (tb_c),. (Tb_a),. B (tb_b),. OP (tb_op),. Resetb (resetb),. CLK (CLK));

Uvijek # 5 CLK = ~ CLK; / / svakih 5 sekundi nano Invert, stvoriti razdoblje 10ns

početna

započeti

$ monitor (tb_a, tb_b, tb_c);

outfile $ = fopen ( "tb_c.txt");

if (! outfile) počinju

$ prikaz ( "Ne mogu zapisati u datoteku!");

$ završiti;

kraj

pat_error = 0;

resetb = 1'b1; CLK = 1'b1; = 0, b = 0; op = 0;

# 2 resetb = 1'b0;

# 2 resetb = 1'b1;/ / Test za poučavanje dodajop = 3'b000;

for (i = 0; i <65536; i = i 1)

započeti

for (j = 0; j <65.536; j = j 1)

započeti

= i [15:0], b = j [15:0];

# 10 true_output = a b;

if (c! == true_output [15:0])

započeti

$ fdisplay (outfile, "% B % b% treba biti rođen, ali je tvoj izlaz% b.", a, b, true_output, c);

pat_error = pat_error 1;

kraj
kraj
kraj

krajendmodule

 

Welcome to EDABoard.com

Sponsor

Back
Top