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.Помогни ми, благодаря много много
Модулът 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.Помогни ми, благодаря много много