hjelpe meg med å håndtere den Programm

M

magma1981

Guest
Jeg gjorde en Programm om DDS

modulen dds7 (fc, PC, clk, rstn, sinout, out, cosout);
output [7:0] sinout, cosout;
output [9:0] out;
input [9:0] fc; / / fc er freq.kontrolleres ordet
input [7:0] PC; / / pc er fase kontrollert ordet
skriving clk, rstn;

reg [7:0] sinout, cosout;
reg [9:0] acc0, acc1, ACC2, acc5;
reg [7:0] acc3, acc4, acc6, acc7, temp, temp1;
reg [0:0] msb, smsb, spipe, spipe1;
reg [0:0] cmsb, csmsb, cpipe, cpipe1;

alltid @ (posedge clk)
begynne
if (! rstn)
begynne
acc0 <= 10'b0000000000;
acc1 <= 10'b0000000000;
ACC2 <= 10'b0000000000;
acc3 <= 8'b00000000;
acc6 <= 8'b00000000;
msb <= 1'b0;
smsb <= 1'b0;
cmsb <= 1'b0;
csmsb <= 1'b0;
spipe <= 1'b0;
cpipe <= 1'b0;
spipe1 <= 1'b0;
cpipe1 <= 1'b0;
slutt
ellers
begynne
acc0 <= acc1 fc;
acc1 <= acc0;
ACC2 <= acc1 PC;
acc5 <= ACC2 256;
acc6 <= acc5 [7:0];
acc3 <= ACC2 [7:0];
spipe <= ACC2 [9];
spipe1 <= spipe; / / avsluttet rørledning
msb <= spipe1;
smsb <= ACC2 [8];
cpipe <= acc5 [9];
cpipe1 <= cpipe;
cmsb <= cpipe1;
csmsb <= acc5 [8];
slutt
slutt

alltid @ (posedge clk)
begynne
if (smsb)
begynne
if ((ACC2 == 256) | | (ACC2 == 768))
begynne
acc4 <= ~ acc3;
slutt
ellers
begynne
acc4 <= ~ acc3 1;
slutt
slutt
ellers
begynne
acc4 <= acc3;
slutt
if (msb)
begynne
sinout <= ~ temp 1;
slutt
ellers
begynne
sinout <= temp;
slutt
if (csmsb)
begynne
if ((acc5 == 256) | | (acc5 == 768))
begynne
acc7 <= ~ acc6;
slutt
ellers
begynne
acc7 <= ~ acc6 1;
slutt
slutt
ellers
begynne
acc7 <= acc6;
slutt
if (cmsb)
begynne
cosout <= ~ temp1 1;
slutt
ellers
begynne
cosout <= temp1;
slutt
slutt

romsin sin (. adresse (acc4). inclock (clk). q (temp));
romsin cos (. adresse (acc7). inclock (clk). q (temp1));
endmodule

antall rom var 2 ^ 8, ca 1 / 4 sinus

sinus data ble fikk med matlab x = 0:2 * pi/1024: 2 * 255 * pi/1024;
y = round (sin (x) * 127)

når simulert i bølgeform, fant jeg ut at utganger av sinus og cos var ikke min trenger når ACC2 var lik 256 eller 768; når ACC2 er lik 256, utdataene for sinus var 127 og 0, men det jeg trenger bør
127127 ;

det vil si det er noe probloms med Programm, men jeg vet ikke hvordan man skal håndtere problemet

plz.hjelp meg, Takk

 
Kan du forklare hva som er å prøve å gjøre?En DDS normalt har en akkumulator pluss noen få linjer med kode på bordet lookup og fase modulering.Type som dette:
Code:

modulen toppen (clk, reset, fc, PC, sinout, cosout);

skriving clk, reset;

input [9:0] fc, PC;

reg [9:0] acc0, fase;

reg [7:0] synd [0:255], cos [0:255]; / / initialisere disse annen

output reg [7:0] sinout, cosout;alltid @ (posedge clk) begynner

acc0 <= reset?
0: acc0 fc;

fase <= acc0 PC;

sinout <= synd [fase [9:2]];

cosout <= cos [fase [9:2]];

slutt

endmodule

 
Sjekk at dette fungerer for deg!
Håper dette hjelper!

Code:

modulen dds7 (fc, PC, clk, rstn, sinout, out, cosout);

output [8:0] sinout, cosout;

output [9:0] out;

input [9:0] fc; / / fc er freq.
kontrolleres ordet

input [7:0] PC; / / pc er fase kontrollert ordet

skriving clk, rstn;reg [8:0] sinout, cosout;

reg [9:0] acc0, acc1, ACC2, acc5;

reg [7:0] acc3, acc4, acc6, acc7;

wire [7:0] temp, temp1;

reg [0:0] msb, smsb, spipe, spipe1;

reg [0:0] cmsb, csmsb, cpipe, cpipe1;alltid @ (posedge clk) begynner

if (! rstn) begynner

acc0 <= 10'b0000000000;

acc1 <= 10'b0000000000;

ACC2 <= 10'b0000000000;

acc3 <= 8'b00000000;

acc6 <= 8'b00000000;

msb <= 1'b0;

smsb <= 1'b0;

cmsb <= 1'b0;

csmsb <= 1'b0;

spipe <= 1'b0;

cpipe <= 1'b0;

spipe1 <= 1'b0;

cpipe1 <= 1'b0;

end else begynne

acc0 <= acc1 fc;

acc1 <= acc0;

ACC2 <= acc1 PC;

acc5 <= ACC2 256;

acc6 <= acc5 [7:0];

acc3 <= ACC2 [7:0];

spipe <= ACC2 [9];

spipe1 <= spipe; / / avsluttet rørledning

msb <= spipe1;

smsb <= ACC2 [8];

cpipe <= acc5 [9];

cpipe1 <= cpipe;

cmsb <= cpipe1;

csmsb <= acc5 [8];

slutt

end / / alltid @ (posedge clk)alltid @ (posedge clk) begynner

if (smsb / * ACC2 [8] * /)

acc4 <= ~ acc3;

ellers

acc4 <= acc3;if (spipe / * ACC2 [9] * /)

sinout <= ~ temp 1;

ellers

sinout <= temp;if (csmsb / * acc5 [8] * /)

acc7 <= ~ acc6;

ellers

acc7 <= acc6;if (cpipe / * acc5 [9] * /)

cosout <= ~ temp1 1;

ellers

cosout <= temp1;

end / / alltid @ (posedge clk)

romsin sin (. adresse (acc4). inclock (clk). q (temp));

romsin cos (. adresse (acc7). inclock (clk). q (temp1));

endmodule / / dds7

 
Tusen takk

til nand_gates: ur høyre,
er det ok!takk!Lagt til etter 26 minutter:til echo47: Jeg beklager om det, fordi jeg er en nyere og min engelsk er ikke bra,

Jeg vet ikke regelen, men faktisk er jeg forbedre meg selv nå.takk for ur råd!

 

Welcome to EDABoard.com

Sponsor

Back
Top