Файл: Лабораторная работа 3 Разработка схем цос на плис типа fpga.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 30.11.2023

Просмотров: 138

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Варианты 4,9 Частота дискретизации Fs=100 Мгц, частота пропускания Fpass=10 Мгц, частота подавления Fstop=19 Мгц, фильтр имеет 7(8) коэффициентов.-0.038645752774681554 0.12608229298259332 0.21239603218007624 0.28323565416535013 0.28323565416535013 0.21239603218007624 0.12608229298259332 -0.038645752774681554 Варианты 5,12 Частота дискретизации Fs=100 Мгц, частота пропускания Fpass=16 Мгц, частота подавления Fstop=26 Мгц, фильтр имеет 7(8) коэффициентов.-0.024458211392255642 0.1385734715904797 0.20432647461212372 0.26273795244659287 0.26273795244659287 0.20432647461212372 0.1385734715904797 -0.024458211392255642 Варианты 6,11 Частота дискретизации Fs=100 Мгц, частота пропускания Fpass=12 Мгц, частота подавления Fstop=24 Мгц, фильтр имеет 7(8) коэффициентов.-0.058116432908280218 0.049430803026937656 0.20936548340988409 0.34953467616723588 0.34953467616723588 0.20936548340988409 0.049430803026937656 -0.058116432908280218 5. Разработать нерекурсивный фильтр нижних частот.Частотные характеристики фильтра задаются в fdatool.Определить реакцию на единичный импульс.Проверить частотные характеристики фильтра.Варианты 1-12 Частота дискретизации Fs=100 Мгц, частота пропускания Fpass=12Мгц, частота подавления Fstop=18 Мгц, фильтр имеет 15(16) коэффициентов.0.037059570118627934 -0.02307320394269835 -0.052956774526219129 -0.062069563249109824 -0.017519265429228749 0.083952385419489794 0.20538459563162348 0.28813463217040336 0.28813463217040336 0.20538459563162348 0.083952385419489794 -0.017519265429228749 -0.062069563249109824 -0.052956774526219129 -0.02307320394269835 0.037059570118627934 6. Разработать нерекурсивный фильтр высоких частот.Частотные характеристики фильтра задаются в fdatool.Определить реакцию на единичный импульс.Проверить частотные характеристики фильтра.Варианты 1-12 Частота дискретизации Fs=100 Мгц, частота подавления Fstop=14 Мгц, частота пропускания Fpass=24Мгц, фильтр имеет 15(16) коэффициентов.0.017425690480098226 -0.0060410075547963783 -0.037948478513453787 -0.03481532541025964 0.036865329587026013 0.11464314902818995 0.045582703094050298 -0.52418449504105036 0.52418449504105036 -0.045582703094050298 -0.11464314902818995 -0.036865329587026013 0.03481532541025964 0.037948478513453787 0.0060410075547963783 -0.017425690480098226 7. Разработать полосовой фильтр.
Частотные характеристики фильтра задаются в fdatool.Определить реакцию на единичный импульс.Проверить частотные характеристики фильтра.Варианты 1-12 0.11624549922712731 -0.020790206504145009 -0.073891791891143851 -0.1177347608815346 -0.11345647456159967 -0.050813727213856463 0.03987313582326811 0.10544954752035379 0.10544954752035379 0.03987313582326811 -0.050813727213856463 -0.11345647456159967 -0.1177347608815346 -0.073891791891143851 -0.020790206504145009 0.11624549922712731 ПРИЛОЖЕНИЕПример схемы на языке Verilog:

Y(n) = 0.75*x(n) + 0.25*x(n-1)

`timescale 1ns / 1psmodule f2(x, clk, y); // внешниесигналыinput [7:0] x; input clk; output reg [7:0] y;reg [7:0] x75=0,xz25b=0,xz=0; // внутренние wire [7:0] x25,x5,xz25; // сигналыalways @ (posedge clk) beginx75 <= x5+x25; // 0.75*x(n)xz25b <= xz25; // 0.25*x(n-1)y <= x75 + xz25b;xz <= x;end assign x5 = {x[7],x[7:1]}; // 0.5*x(n)assign x25 = {x[7],x[7],x[7:2]};// 0.25*x(n)assign xz25 = {xz[7],xz[7],xz[7:2]};endmoduleНерекурсивный фильтр. Входной буферreg signed [15:0] xz [0 : 7]; // двумерный массив xzalways @ (posedge clk ) // 8 16-разрядныхчиселif (!in_reset_n)// сброс xz[0], xz[1],…, xz[7]for (i = 0; i < 8; i = i + 8'd1) // xz[i] <= #1 0;else // сдвиг xz[1]<-xz[0], xz[2]<-xz[1],…, xz[7]<-xz[6],begin // xz[0]<-x; выполняетсяодновременноfor (i = 1; i < 8; i = i + 8'd1)xz[i] <= xz[i - 1]; //xz [0] <= x; // endНерекурсивный фильтр. Задание коэффициентовwiresigned [20:0] b[0 : 3]; // двумерный массивassign b[0] = 21'h1f58fb; assign b[1] = 21'h1c3fd; assign b[2] = 21'h3622b; assign b[3] = 21'h4ae1a;Вычисление ynФильтр имеет симметричные коэффициенты: b0=bM-1, b1=bM-2, … reg signed [15:0] xz [0 : 7]; // двумерный массив xzreg signed [16:0] xzsum[0 : 3]; // сумм для сим коэф-товreg signed [37:0] bxx[0 : 3]; // Рез умнож на коэфф-тыreg signed [38:0] s0[0 : 1]; // частичные суммы reg signed [39:0] s1; // always @ (posedge clk ) for (i = 0; i < 4; i = i + 8'd1) beginxzsum[i] <= #1 xz[i] + xz[7 - i]; bxx[i] <= #1 xzsum[i] * b[i]; end// xzsum[0] <= #1 xz[0]+xz[7]; xzsum[1] <= #1 xz[1]+xz[6];

// xzsum[2] <= #1 xz[2]+xz[5]; xzsum[3] <= #1 xz[3]+xz[4];// bxx[0] <= #1 xzsum[0]*b[0]; bxx[1] <= #1 xzsum[1]*b[1];// bxx[2] <= #1 xzsum[2]*b[2]; bxx[3] <= #1 xzsum[3]*b[3];s0[0] <= bxx[0] + bxx[1]; s0[1] <= bxx[2] + bxx[3];s1 <= s0[0] + s0[1]; // Чтение входного сигнала из файла reg signed [15:0] roms [100:0]; initial $readmemh("c:/PRJ/…sin01.txt", roms);reg [15:0] addr2=0; reg signed [15:0] rs=0, qsin=0; always @ (posedge clk)beginif ((reset == 1'b0) || (addr2 == 16'd099)) addr2 <= 9'b000000000;else addr2 <= addr2 + 9'b000000001;rs <= (roms[addr2]); qsin <= rs; x <= qsin; // endЗаписьрезультатоввфайлinteger handle1,i,i0;initial beginhandle1 = $fopen("Z:/nerfxx/… b11.txt"); i0=0;#2000for (i = 0; i < 1150; i = i + 1) begin //$fwrite(handle1," %d %d %d %d ",i, x, y, f1.b[i0]);i0=i0+1; if(i0 > 3)i0=0;$fwrite(handle1,"\n");#10;end #10;$fclose(handle1);endЗаголовокмодуля`timescale 1ns / 1ps // КИХ фильтр module f07u ( output [15:0] y, // выход данныхinput clk, in_reset_n,// inputsigned [15:0] x// вход данных,);Включение компонента в проектируемое устройство// .наименование контакта(имя сигнала)f07uf1 (.in_reset_n(reset), .clk(clk), .x(x), .y(y));