ми помогне да се справят с програма

M

magma1981

Guest
Аз ли програма за DDS

Модулът dds7 (FC, PC, clk, rstn, sinout, вън, cosout);
изход [7:0] sinout, cosout;
изход [9:0] изложени;
вход [9:0] FC; / / FC е freq.контролирани дума
вход [7:0] бр; / / бр е фаза контролирани дума
вход clk, rstn;

рег. [7:0] sinout, cosout;
рег. [9:0] acc0, acc1, acc2, acc5;
рег. [7:0] acc3, acc4, acc6, acc7, температура, temp1;
рег. [0:0] msb, smsb, spipe, spipe1;
рег. [0:0] cmsb, csmsb, cpipe, cpipe1;

Винаги @ (posedge clk)
започвам
ако (! rstn)
започвам
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;
приключвам
в противен случай
започвам
acc0 <= acc1 FC;
acc1 <= acc0;
acc2 <= acc1 бр;
acc5 <= acc2 256;
acc6 <= acc5 [7:0];
acc3 <= acc2 [7:0];
spipe <= acc2 [9];
spipe1 <= spipe; / / завършени тръбопровод
msb <= spipe1;
smsb <= acc2 [8];
cpipe <= acc5 [9];
cpipe1 <= cpipe;
cmsb <= cpipe1;
csmsb <= acc5 [8];
приключвам
приключвам

Винаги @ (posedge clk)
започвам
ако (smsb)
започвам
ако ((acc2 == 256) | | (acc2 == 768))
започвам
acc4 <= ~ acc3;
приключвам
в противен случай
започвам
acc4 <= ~ acc3 1;
приключвам
приключвам
в противен случай
започвам
acc4 <= acc3;
приключвам
ако (msb)
започвам
sinout <= ~ температура 1;
приключвам
в противен случай
започвам
sinout <= температура;
приключвам
ако (csmsb)
започвам
ако ((acc5 == 256) | | (acc5 == 768))
започвам
acc7 <= ~ acc6;
приключвам
в противен случай
започвам
acc7 <= ~ acc6 1;
приключвам
приключвам
в противен случай
започвам
acc7 <= acc6;
приключвам
ако (cmsb)
започвам
cosout <= ~ temp1 1;
приключвам
в противен случай
започвам
cosout <= temp1;
приключвам
приключвам

romsin греха (. адрес (acc4),. inclock (clk),. Q (температура));
romsin защото (. адрес (acc7),. inclock (clk),. Q (temp1));
endmodule

броят на ROM е 2 ^ 8, около 1 / 4 хня

на данни е задължително имам от matlab х = 0:2 * pi/1024: 2 * 255 * pi/1024;
Y = кръгли (греха (X) * 127)

при симулирани на waveform,
открих, че резултатите от задължително и защото не ми трябва, когато acc2 е равна на 256 или 768; когато acc2 е равна на 256, на изхода на задължително е 127 и 0, но това, което трябва да бъде
127127 ;

е да се каже, че има известна probloms с моята програма, но аз не знам как да се справят с проблема

PLZ.Помогни ми, благодаря много много

 
Може ли да обясните всичко това, което този код се опитваш да направиш?А DDS обикновено има един акумулатор, плюс няколко реда код за таблицата за търсене и фазата модулация.Вид подобен този:
Код:

Модулът нагоре (clk, нулиране, FC, PC, sinout, cosout);

вход clk, нулиране;

вход [9:0] FC, бр;

рег. [9:0] acc0, фаза;

рег. [7:0] греха [0:255], защото [0:255]; / / инициализиране на тези някак

продукция рег. [7:0] sinout, cosout;Винаги @ (posedge clk) започва

acc0 <= възстановите?
0: acc0 FC;

фаза <= acc0 бр;

sinout <= греха [фаза [9:2]];

cosout <= защото [фаза [9:2]];

приключвам

endmodule

 
Проверете дали това работи за теб!
Надявам се това да помогне!

Код:

Модулът dds7 (FC, PC, clk, rstn, sinout, вън, cosout);

изход [8:0] sinout, cosout;

изход [9:0] изложени;

вход [9:0] FC; / / FC е freq.
контролирани дума

вход [7:0] бр; / / бр е фаза контролирани дума

вход clk, rstn;рег. [8:0] sinout, cosout;

рег. [9:0] acc0, acc1, acc2, acc5;

рег. [7:0] acc3, acc4, acc6, acc7;

телени [7:0] температура, temp1;

рег. [0:0] msb, smsb, spipe, spipe1;

рег. [0:0] cmsb, csmsb, cpipe, cpipe1;Винаги @ (posedge clk) започва

ако (! rstn) започва

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;

края друг започне

acc0 <= acc1 FC;

acc1 <= acc0;

acc2 <= acc1 бр;

acc5 <= acc2 256;

acc6 <= acc5 [7:0];

acc3 <= acc2 [7:0];

spipe <= acc2 [9];

spipe1 <= spipe; / / завършени тръбопровод

msb <= spipe1;

smsb <= acc2 [8];

cpipe <= acc5 [9];

cpipe1 <= cpipe;

cmsb <= cpipe1;

csmsb <= acc5 [8];

приключвам

край / / винаги @ (posedge clk)Винаги @ (posedge clk) започва

ако (smsb / * acc2 [8] * /)

acc4 <= ~ acc3;

в противен случай

acc4 <= acc3;ако (spipe / * acc2 [9] * /)

sinout <= ~ температура 1;

в противен случай

sinout <= температура;ако (csmsb / * acc5 [8] * /)

acc7 <= ~ acc6;

в противен случай

acc7 <= acc6;ако (cpipe / * acc5 [9] * /)

cosout <= ~ temp1 1;

в противен случай

cosout <= temp1;

край / / винаги @ (posedge clk)

romsin греха (. адрес (acc4),. inclock (clk),. Q (температура));

romsin защото (. адрес (acc7),. inclock (clk),. Q (temp1));

endmodule / / dds7

 
Благодаря много много

да nand_gates: Ур право, това
е ОК!Благодаря!Добавен след 26 минути:да echo47: Аз съжалявам за това, защото аз съм по-нова и моят английски не е добър,

Аз не знам правилото, но всъщност аз съм подобряване себе си сега.Благодаря за Ур съветва!

 

Welcome to EDABoard.com

Sponsor

Back
Top