概述
这里通过两种方式来实现FPGA查表生成正弦波
先看图
这是FPGA通过查ROM表生成正弦波的原理
下面开始介绍具体实现方法:
这里我使用的开发板是MAX10 10M50DAFC7G,不同的开发板接口可能不同,注意查找对应资料,正确连接端口。
一:通过.v文件调用,根据地址直接查表生成所需的正弦波
通过此种方式获取.v文件可以使用软件编程的方式,常见的有c、MATLAB等等,这里通过MATLAB代码来实现.v文件数据的生成。
%generater sin table no negtive number
len = 512;
ow = 8;
iw = round(log2(len));
x = round((sin(0:2*pi/len:(2*pi-2*pi/len))+1)*(2^(ow-1)-1));
fid = fopen('sin_table_test.v','w');
fprintf(fid,'module sin_table(n');
fprintf(fid,' input [%d:0]address,n',iw-1);
fprintf(fid,' output reg[%d:0]datan',ow-1);
fprintf(fid,' );n');
fprintf(fid,'always @(*)n');
fprintf(fid,'beginn');
fprintf(fid,' case(address)n');
for k=1:len
if(x(k)<0)
fprintf(fid,' %d''d%d: data <= -%d''d%d;n',iw,k-1,ow,x(k)*-1);
else
fprintf(fid,' %d''d%d: data <= %d''d%d;n',iw,k-1,ow,x(k));
end
end
fprintf(fid,' endcasen');
fprintf(fid,'endn');
fprintf(fid,'endmodulen');
fclose(fid);
通过MATLAB软件运行后可以生成.v文件,打开文件,内容如下:
module sin_table_test(
input [8:0]address,
output reg[7:0]data
);
always @(*)
begin
case(address)
9'd0: data <= 8'd127;
9'd1: data <= 8'd129;
9'd2: data <= 8'd130;
9'd3: data <= 8'd132;
9'd4: data <= 8'd133;
9'd5: data <= 8'd135;
9'd6: data <= 8'd136;
9'd7: data <= 8'd138;
9'd8: data <= 8'd139;
9'd9: data <= 8'd141;
9'd10: data <= 8'd143;
9'd11: data <= 8'd144;
9'd12: data <= 8'd146;
9'd13: data <= 8'd147;
9'd14: data <= 8'd149;
9'd15: data <= 8'd150;
9'd16: data <= 8'd152;
9'd17: data <= 8'd153;
9'd18: data <= 8'd155;
9'd19: data <= 8'd156;
9'd20: data <= 8'd158;
9'd21: data <= 8'd159;
9'd22: data <= 8'd161;
9'd23: data <= 8'd162;
9'd24: data <= 8'd164;
9'd25: data <= 8'd165;
9'd26: data <= 8'd167;
9'd27: data <= 8'd168;
9'd28: data <= 8'd170;
9'd29: data <= 8'd171;
9'd30: data <= 8'd173;
9'd31: data <= 8'd174;
9'd32: data <= 8'd176;
9'd33: data <= 8'd177;
9'd34: data <= 8'd178;
9'd35: data <= 8'd180;
9'd36: data <= 8'd181;
9'd37: data <= 8'd183;
9'd38: data <= 8'd184;
9'd39: data <= 8'd185;
9'd40: data <= 8'd187;
9'd41: data <= 8'd188;
9'd42: data <= 8'd190;
9'd43: data <= 8'd191;
9'd44: data <= 8'd192;
9'd45: data <= 8'd194;
9'd46: data <= 8'd195;
9'd47: data <= 8'd196;
9'd48: data <= 8'd198;
9'd49: data <= 8'd199;
9'd50: data <= 8'd200;
9'd51: data <= 8'd201;
9'd52: data <= 8'd203;
9'd53: data <= 8'd204;
9'd54: data <= 8'd205;
9'd55: data <= 8'd206;
9'd56: data <= 8'd208;
9'd57: data <= 8'd209;
9'd58: data <= 8'd210;
9'd59: data <= 8'd211;
9'd60: data <= 8'd212;
9'd61: data <= 8'd213;
9'd62: data <= 8'd215;
9'd63: data <= 8'd216;
9'd64: data <= 8'd217;
9'd65: data <= 8'd218;
9'd66: data <= 8'd219;
9'd67: data <= 8'd220;
9'd68: data <= 8'd221;
9'd69: data <= 8'd222;
9'd70: data <= 8'd223;
9'd71: data <= 8'd224;
9'd72: data <= 8'd225;
9'd73: data <= 8'd226;
9'd74: data <= 8'd227;
9'd75: data <= 8'd228;
9'd76: data <= 8'd229;
9'd77: data <= 8'd230;
9'd78: data <= 8'd231;
9'd79: data <= 8'd232;
9'd80: data <= 8'd233;
9'd81: data <= 8'd233;
9'd82: data <= 8'd234;
9'd83: data <= 8'd235;
9'd84: data <= 8'd236;
9'd85: data <= 8'd237;
9'd86: data <= 8'd238;
9'd87: data <= 8'd238;
9'd88: data <= 8'd239;
9'd89: data <= 8'd240;
9'd90: data <= 8'd240;
9'd91: data <= 8'd241;
9'd92: data <= 8'd242;
9'd93: data <= 8'd242;
9'd94: data <= 8'd243;
9'd95: data <= 8'd244;
9'd96: data <= 8'd244;
9'd97: data <= 8'd245;
9'd98: data <= 8'd245;
9'd99: data <= 8'd246;
9'd100: data <= 8'd247;
9'd101: data <= 8'd247;
9'd102: data <= 8'd248;
9'd103: data <= 8'd248;
9'd104: data <= 8'd249;
9'd105: data <= 8'd249;
9'd106: data <= 8'd249;
9'd107: data <= 8'd250;
9'd108: data <= 8'd250;
9'd109: data <= 8'd251;
9'd110: data <= 8'd251;
9'd111: data <= 8'd251;
9'd112: data <= 8'd252;
9'd113: data <= 8'd252;
9'd114: data <= 8'd252;
9'd115: data <= 8'd252;
9'd116: data <= 8'd253;
9'd117: data <= 8'd253;
9'd118: data <= 8'd253;
9'd119: data <= 8'd253;
9'd120: data <= 8'd253;
9'd121: data <= 8'd254;
9'd122: data <= 8'd254;
9'd123: data <= 8'd254;
9'd124: data <= 8'd254;
9'd125: data <= 8'd254;
9'd126: data <= 8'd254;
9'd127: data <= 8'd254;
9'd128: data <= 8'd254;
9'd129: data <= 8'd254;
9'd130: data <= 8'd254;
9'd131: data <= 8'd254;
9'd132: data <= 8'd254;
9'd133: data <= 8'd254;
9'd134: data <= 8'd254;
9'd135: data <= 8'd254;
9'd136: data <= 8'd253;
9'd137: data <= 8'd253;
9'd138: data <= 8'd253;
9'd139: data <= 8'd253;
9'd140: data <= 8'd253;
9'd141: data <= 8'd252;
9'd142: data <= 8'd252;
9'd143: data <= 8'd252;
9'd144: data <= 8'd252;
9'd145: data <= 8'd251;
9'd146: data <= 8'd251;
9'd147: data <= 8'd251;
9'd148: data <= 8'd250;
9'd149: data <= 8'd250;
9'd150: data <= 8'd249;
9'd151: data <= 8'd249;
9'd152: data <= 8'd249;
9'd153: data <= 8'd248;
9'd154: data <= 8'd248;
9'd155: data <= 8'd247;
9'd156: data <= 8'd247;
9'd157: data <= 8'd246;
9'd158: data <= 8'd245;
9'd159: data <= 8'd245;
9'd160: data <= 8'd244;
9'd161: data <= 8'd244;
9'd162: data <= 8'd243;
9'd163: data <= 8'd242;
9'd164: data <= 8'd242;
9'd165: data <= 8'd241;
9'd166: data <= 8'd240;
9'd167: data <= 8'd240;
9'd168: data <= 8'd239;
9'd169: data <= 8'd238;
9'd170: data <= 8'd238;
9'd171: data <= 8'd237;
9'd172: data <= 8'd236;
9'd173: data <= 8'd235;
9'd174: data <= 8'd234;
9'd175: data <= 8'd233;
9'd176: data <= 8'd233;
9'd177: data <= 8'd232;
9'd178: data <= 8'd231;
9'd179: data <= 8'd230;
9'd180: data <= 8'd229;
9'd181: data <= 8'd228;
9'd182: data <= 8'd227;
9'd183: data <= 8'd226;
9'd184: data <= 8'd225;
9'd185: data <= 8'd224;
9'd186: data <= 8'd223;
9'd187: data <= 8'd222;
9'd188: data <= 8'd221;
9'd189: data <= 8'd220;
9'd190: data <= 8'd219;
9'd191: data <= 8'd218;
9'd192: data <= 8'd217;
9'd193: data <= 8'd216;
9'd194: data <= 8'd215;
9'd195: data <= 8'd213;
9'd196: data <= 8'd212;
9'd197: data <= 8'd211;
9'd198: data <= 8'd210;
9'd199: data <= 8'd209;
9'd200: data <= 8'd208;
9'd201: data <= 8'd206;
9'd202: data <= 8'd205;
9'd203: data <= 8'd204;
9'd204: data <= 8'd203;
9'd205: data <= 8'd201;
9'd206: data <= 8'd200;
9'd207: data <= 8'd199;
9'd208: data <= 8'd198;
9'd209: data <= 8'd196;
9'd210: data <= 8'd195;
9'd211: data <= 8'd194;
9'd212: data <= 8'd192;
9'd213: data <= 8'd191;
9'd214: data <= 8'd190;
9'd215: data <= 8'd188;
9'd216: data <= 8'd187;
9'd217: data <= 8'd185;
9'd218: data <= 8'd184;
9'd219: data <= 8'd183;
9'd220: data <= 8'd181;
9'd221: data <= 8'd180;
9'd222: data <= 8'd178;
9'd223: data <= 8'd177;
9'd224: data <= 8'd176;
9'd225: data <= 8'd174;
9'd226: data <= 8'd173;
9'd227: data <= 8'd171;
9'd228: data <= 8'd170;
9'd229: data <= 8'd168;
9'd230: data <= 8'd167;
9'd231: data <= 8'd165;
9'd232: data <= 8'd164;
9'd233: data <= 8'd162;
9'd234: data <= 8'd161;
9'd235: data <= 8'd159;
9'd236: data <= 8'd158;
9'd237: data <= 8'd156;
9'd238: data <= 8'd155;
9'd239: data <= 8'd153;
9'd240: data <= 8'd152;
9'd241: data <= 8'd150;
9'd242: data <= 8'd149;
9'd243: data <= 8'd147;
9'd244: data <= 8'd146;
9'd245: data <= 8'd144;
9'd246: data <= 8'd143;
9'd247: data <= 8'd141;
9'd248: data <= 8'd139;
9'd249: data <= 8'd138;
9'd250: data <= 8'd136;
9'd251: data <= 8'd135;
9'd252: data <= 8'd133;
9'd253: data <= 8'd132;
9'd254: data <= 8'd130;
9'd255: data <= 8'd129;
9'd256: data <= 8'd127;
9'd257: data <= 8'd125;
9'd258: data <= 8'd124;
9'd259: data <= 8'd122;
9'd260: data <= 8'd121;
9'd261: data <= 8'd119;
9'd262: data <= 8'd118;
9'd263: data <= 8'd116;
9'd264: data <= 8'd115;
9'd265: data <= 8'd113;
9'd266: data <= 8'd111;
9'd267: data <= 8'd110;
9'd268: data <= 8'd108;
9'd269: data <= 8'd107;
9'd270: data <= 8'd105;
9'd271: data <= 8'd104;
9'd272: data <= 8'd102;
9'd273: data <= 8'd101;
9'd274: data <= 8'd99;
9'd275: data <= 8'd98;
9'd276: data <= 8'd96;
9'd277: data <= 8'd95;
9'd278: data <= 8'd93;
9'd279: data <= 8'd92;
9'd280: data <= 8'd90;
9'd281: data <= 8'd89;
9'd282: data <= 8'd87;
9'd283: data <= 8'd86;
9'd284: data <= 8'd84;
9'd285: data <= 8'd83;
9'd286: data <= 8'd81;
9'd287: data <= 8'd80;
9'd288: data <= 8'd78;
9'd289: data <= 8'd77;
9'd290: data <= 8'd76;
9'd291: data <= 8'd74;
9'd292: data <= 8'd73;
9'd293: data <= 8'd71;
9'd294: data <= 8'd70;
9'd295: data <= 8'd69;
9'd296: data <= 8'd67;
9'd297: data <= 8'd66;
9'd298: data <= 8'd64;
9'd299: data <= 8'd63;
9'd300: data <= 8'd62;
9'd301: data <= 8'd60;
9'd302: data <= 8'd59;
9'd303: data <= 8'd58;
9'd304: data <= 8'd56;
9'd305: data <= 8'd55;
9'd306: data <= 8'd54;
9'd307: data <= 8'd53;
9'd308: data <= 8'd51;
9'd309: data <= 8'd50;
9'd310: data <= 8'd49;
9'd311: data <= 8'd48;
9'd312: data <= 8'd46;
9'd313: data <= 8'd45;
9'd314: data <= 8'd44;
9'd315: data <= 8'd43;
9'd316: data <= 8'd42;
9'd317: data <= 8'd41;
9'd318: data <= 8'd39;
9'd319: data <= 8'd38;
9'd320: data <= 8'd37;
9'd321: data <= 8'd36;
9'd322: data <= 8'd35;
9'd323: data <= 8'd34;
9'd324: data <= 8'd33;
9'd325: data <= 8'd32;
9'd326: data <= 8'd31;
9'd327: data <= 8'd30;
9'd328: data <= 8'd29;
9'd329: data <= 8'd28;
9'd330: data <= 8'd27;
9'd331: data <= 8'd26;
9'd332: data <= 8'd25;
9'd333: data <= 8'd24;
9'd334: data <= 8'd23;
9'd335: data <= 8'd22;
9'd336: data <= 8'd21;
9'd337: data <= 8'd21;
9'd338: data <= 8'd20;
9'd339: data <= 8'd19;
9'd340: data <= 8'd18;
9'd341: data <= 8'd17;
9'd342: data <= 8'd16;
9'd343: data <= 8'd16;
9'd344: data <= 8'd15;
9'd345: data <= 8'd14;
9'd346: data <= 8'd14;
9'd347: data <= 8'd13;
9'd348: data <= 8'd12;
9'd349: data <= 8'd12;
9'd350: data <= 8'd11;
9'd351: data <= 8'd10;
9'd352: data <= 8'd10;
9'd353: data <= 8'd9;
9'd354: data <= 8'd9;
9'd355: data <= 8'd8;
9'd356: data <= 8'd7;
9'd357: data <= 8'd7;
9'd358: data <= 8'd6;
9'd359: data <= 8'd6;
9'd360: data <= 8'd5;
9'd361: data <= 8'd5;
9'd362: data <= 8'd5;
9'd363: data <= 8'd4;
9'd364: data <= 8'd4;
9'd365: data <= 8'd3;
9'd366: data <= 8'd3;
9'd367: data <= 8'd3;
9'd368: data <= 8'd2;
9'd369: data <= 8'd2;
9'd370: data <= 8'd2;
9'd371: data <= 8'd2;
9'd372: data <= 8'd1;
9'd373: data <= 8'd1;
9'd374: data <= 8'd1;
9'd375: data <= 8'd1;
9'd376: data <= 8'd1;
9'd377: data <= 8'd0;
9'd378: data <= 8'd0;
9'd379: data <= 8'd0;
9'd380: data <= 8'd0;
9'd381: data <= 8'd0;
9'd382: data <= 8'd0;
9'd383: data <= 8'd0;
9'd384: data <= 8'd0;
9'd385: data <= 8'd0;
9'd386: data <= 8'd0;
9'd387: data <= 8'd0;
9'd388: data <= 8'd0;
9'd389: data <= 8'd0;
9'd390: data <= 8'd0;
9'd391: data <= 8'd0;
9'd392: data <= 8'd1;
9'd393: data <= 8'd1;
9'd394: data <= 8'd1;
9'd395: data <= 8'd1;
9'd396: data <= 8'd1;
9'd397: data <= 8'd2;
9'd398: data <= 8'd2;
9'd399: data <= 8'd2;
9'd400: data <= 8'd2;
9'd401: data <= 8'd3;
9'd402: data <= 8'd3;
9'd403: data <= 8'd3;
9'd404: data <= 8'd4;
9'd405: data <= 8'd4;
9'd406: data <= 8'd5;
9'd407: data <= 8'd5;
9'd408: data <= 8'd5;
9'd409: data <= 8'd6;
9'd410: data <= 8'd6;
9'd411: data <= 8'd7;
9'd412: data <= 8'd7;
9'd413: data <= 8'd8;
9'd414: data <= 8'd9;
9'd415: data <= 8'd9;
9'd416: data <= 8'd10;
9'd417: data <= 8'd10;
9'd418: data <= 8'd11;
9'd419: data <= 8'd12;
9'd420: data <= 8'd12;
9'd421: data <= 8'd13;
9'd422: data <= 8'd14;
9'd423: data <= 8'd14;
9'd424: data <= 8'd15;
9'd425: data <= 8'd16;
9'd426: data <= 8'd16;
9'd427: data <= 8'd17;
9'd428: data <= 8'd18;
9'd429: data <= 8'd19;
9'd430: data <= 8'd20;
9'd431: data <= 8'd21;
9'd432: data <= 8'd21;
9'd433: data <= 8'd22;
9'd434: data <= 8'd23;
9'd435: data <= 8'd24;
9'd436: data <= 8'd25;
9'd437: data <= 8'd26;
9'd438: data <= 8'd27;
9'd439: data <= 8'd28;
9'd440: data <= 8'd29;
9'd441: data <= 8'd30;
9'd442: data <= 8'd31;
9'd443: data <= 8'd32;
9'd444: data <= 8'd33;
9'd445: data <= 8'd34;
9'd446: data <= 8'd35;
9'd447: data <= 8'd36;
9'd448: data <= 8'd37;
9'd449: data <= 8'd38;
9'd450: data <= 8'd39;
9'd451: data <= 8'd41;
9'd452: data <= 8'd42;
9'd453: data <= 8'd43;
9'd454: data <= 8'd44;
9'd455: data <= 8'd45;
9'd456: data <= 8'd46;
9'd457: data <= 8'd48;
9'd458: data <= 8'd49;
9'd459: data <= 8'd50;
9'd460: data <= 8'd51;
9'd461: data <= 8'd53;
9'd462: data <= 8'd54;
9'd463: data <= 8'd55;
9'd464: data <= 8'd56;
9'd465: data <= 8'd58;
9'd466: data <= 8'd59;
9'd467: data <= 8'd60;
9'd468: data <= 8'd62;
9'd469: data <= 8'd63;
9'd470: data <= 8'd64;
9'd471: data <= 8'd66;
9'd472: data <= 8'd67;
9'd473: data <= 8'd69;
9'd474: data <= 8'd70;
9'd475: data <= 8'd71;
9'd476: data <= 8'd73;
9'd477: data <= 8'd74;
9'd478: data <= 8'd76;
9'd479: data <= 8'd77;
9'd480: data <= 8'd78;
9'd481: data <= 8'd80;
9'd482: data <= 8'd81;
9'd483: data <= 8'd83;
9'd484: data <= 8'd84;
9'd485: data <= 8'd86;
9'd486: data <= 8'd87;
9'd487: data <= 8'd89;
9'd488: data <= 8'd90;
9'd489: data <= 8'd92;
9'd490: data <= 8'd93;
9'd491: data <= 8'd95;
9'd492: data <= 8'd96;
9'd493: data <= 8'd98;
9'd494: data <= 8'd99;
9'd495: data <= 8'd101;
9'd496: data <= 8'd102;
9'd497: data <= 8'd104;
9'd498: data <= 8'd105;
9'd499: data <= 8'd107;
9'd500: data <= 8'd108;
9'd501: data <= 8'd110;
9'd502: data <= 8'd111;
9'd503: data <= 8'd113;
9'd504: data <= 8'd115;
9'd505: data <= 8'd116;
9'd506: data <= 8'd118;
9'd507: data <= 8'd119;
9'd508: data <= 8'd121;
9'd509: data <= 8'd122;
9'd510: data <= 8'd124;
9'd511: data <= 8'd125;
endcase
end
endmodule
新建一个quartus工程,添加顶层文件后,把这个.v文件加进去,这里我通过现在正在做的一个adda项目的文件进行演示:
ada_test.v文件的代码如下:
`timescale 1ns / 1ps
//
// Module Name: C5G_PLL
//
module ada_test(
clk50,
rst_n,
DAC_CLK,
DAC_DAT,
DAC_PD,
ADC_CLK,
ADC_DAT,
ADC_PD,
SW
);
input clk50;
input rst_n;
//=======================================================
// DAC
//=======================================================
output DAC_CLK;
output [7:0] DAC_DAT;
output DAC_PD;
//=======================================================
// ADC
//=======================================================
output ADC_CLK;
input [7:0] ADC_DAT;
output ADC_PD;
input [1:0] SW;
reg [7:0] ADC_DAT_REG;
assign DAC_CLK = clk50;
assign ADC_CLK = ~clk50;
assign DAC_PD = 0;
assign ADC_PD = 0;
reg [8:0] Cont; //定义一个计数器,用于SIN的地址
Cont持续计数
always@(posedge clk50 )
begin
Cont <= Cont+1;
//address <= address +1;
end
always @(posedge clk50)
begin
ADC_DAT_REG <= ADC_DAT;
end
//generate sine wave
// 实例化调用刚才加进去的正弦波文件
sin_table INS_SIN(
.address(Cont),
.data(DAC_DAT)
);
endmodule
为了方便观看,这里提供两种方式来进行验证:
1、通过新建University Program VWF文件添加信号验证
最终生成的波形如下:
注:只用对clk50 和 rst_n进行设置。其余部分保持不动即可
2、通过adda模块和signaltap结合观察数据波形
如下图波形所示:
二、通过FPGA的IP核调用实现查表
这里首先需要生成对应的mif文件,之后通过FPGA的IP核生成.v文件,然后在顶层模块中实现调用即可。说的可能有点简单,但是实际操作并不简单,过程很多已经省略,鉴于篇幅,不再展开。
mif文件:
Sine Wave Data —>.mif file
mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据。
生成.mif文件的方法很多
1、利用Quartus自带的mif编辑器
2、利用mif软件生成,百度:Mif Maker2010的使用方法
3、有mif的格式,可以使用excel来生成数据,再导入mif文件里
将生成的.mif文件放到相应的项目文件夹里,也可以直接使用我们的提供的mif文件
这里推荐使用MIf Makeer2010软件生成对应的mif文件
软件打开后页面如下:
在查看中设置全局参数:
在设定波形中选择正弦波后保存成xxx.mif文件即可,打开quartus软件通过添加mif文件来生成ROM表的.v文件
打开ip核,直接搜索对应的ip。
设置要生成的文件名:
步骤如下:
在这里记得添加mif文件:
继续next一直到最后即可:
这里勾选xxx_inst.v是为了更好的参考实例调用格式
在顶层文件中添加实例化(也可以直接修改最开始的.v文件实例化代码)
`timescale 1ns / 1ps
//
// Module Name: C5G_PLL
//
module ada_test(
clk50,
rst_n,
DAC_CLK,
DAC_DAT,
DAC_PD,
ADC_CLK,
ADC_DAT,
ADC_PD,
SW
);
input clk50;
input rst_n;
//=======================================================
// DAC
//=======================================================
output DAC_CLK;
output [7:0] DAC_DAT;
output DAC_PD;
//=======================================================
// ADC
//=======================================================
output ADC_CLK;
input [7:0] ADC_DAT;
output ADC_PD;
input [1:0] SW;
reg [7:0] ADC_DAT_REG;
assign DAC_CLK = clk50;
assign ADC_CLK = ~clk50;
assign DAC_PD = 0;
assign ADC_PD = 0;
reg [8:0] Cont; //定义一个计数器,用于SIN的地址
Cont持续计数
always@(posedge clk50 )
begin
Cont <= Cont+1;
//address <= address +1;
end
always @(posedge clk50)
begin
ADC_DAT_REG <= ADC_DAT;
end
//generate sine wave
sine_1 sin_rom_inst (
.address ( Cont ),
.clock ( ~clk50 ),
.q ( DAC_DAT )
);
endmodule
通过signalTap生成的波形如下:
可以看出两种方法都是通过查表的方式来实现正弦波的生成,实际中可以根据自己的需要进行选择。
这篇文章里面有很多东西进行了省略,篇幅有限,还请见谅。后面有时间我也会继续进行改进。
最后
以上就是积极金鱼为你收集整理的FPGA(四):FPGA通过查表的方式生成正弦波的全部内容,希望文章能够帮你解决FPGA(四):FPGA通过查表的方式生成正弦波所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复