当前位置: 首页 > news >正文

企业网站建设意义新软件推广

企业网站建设意义,新软件推广,沈阳网络推广,武汉做网站1 全连接层设计 1.1 Layer 进行线性计算的单元layer,原理图如图所示: 1.2 processingElement Layer中的线性计算单元processingElement,原理图如图所示: processingElement模块展开原理图,如图所示,包含…

1 全连接层设计

1.1 Layer

进行线性计算的单元layer,原理图如图所示:

在这里插入图片描述

1.2 processingElement

Layer中的线性计算单元processingElement,原理图如图所示:

在这里插入图片描述
processingElement模块展开原理图,如图所示,包含一个乘法器和一个加法器,对输入进行累乘和累加

在这里插入图片描述

1.3 weightMemory

全连接层的权重存储于weightMemory单元,原理图如图所示:

在这里插入图片描述

2 代码实现

2.1 weightMemory

2.1.1 设计输入

创建weightMemory文件,操作如图:

在这里插入图片描述

双击打开,输入代码:

module weightMemory(clk,address,weights);parameter DATA_WIDTH = 32;
parameter INPUT_NODES = 100;
parameter OUTPUT_NODES = 32;
parameter file = "E:/FPGA_Learn/FPGA/Day1211/Weight/weightsdense_1_IEEE.txt";localparam TOTAL_WEIGHT_SIZE = INPUT_NODES * OUTPUT_NODES;input clk;
input [7:0] address;
output reg [DATA_WIDTH*OUTPUT_NODES-1:0] weights;reg [DATA_WIDTH-1:0] memory [0:TOTAL_WEIGHT_SIZE-1];integer i;always @ (posedge clk) begin	if (address > INPUT_NODES-1 || address < 0) beginweights = 0;end else beginfor (i = 0; i < OUTPUT_NODES; i = i + 1) beginweights[(OUTPUT_NODES-1-i)*DATA_WIDTH+:DATA_WIDTH] = memory[(address*OUTPUT_NODES)+i];endend
endinitial begin$readmemh(file,memory);
endendmodule

如图所示:

在这里插入图片描述

2.1.2 分析与综合

将weightMemory设置为顶层:

在这里插入图片描述

关闭上次分析文件:

在这里插入图片描述

对设计进行分析,操作如图:

在这里插入图片描述

分析后的设计,Vivado自动生成原理图,如图:

在这里插入图片描述

原理图如图:

在这里插入图片描述

对设计进行综合,操作如图:

在这里插入图片描述

综合完成,关闭即可

2.1.3 功能仿真

创建仿真激励文件,操作如图:

在这里插入图片描述

双击打开,输入激励代码:

module tb_weightMemroy();reg clk;
reg [6:0] address;
wire [32*32-1:0] weights;localparam PERIOD = 100;always#(PERIOD/2) clk = ~clk;initial begin#0clk = 1'b0;address = 0;#PERIODaddress = 1;#PERIOD address = 2;#PERIODaddress = 32;#PERIOD$stop;
endweightMemory UUT
(.clk(clk),.address(address),.weights(weights)
);endmodule

如图所示:

在这里插入图片描述
将tb_weightMemory设置为顶层:

在这里插入图片描述

开始进行仿真,操作如下:

在这里插入图片描述

仿真波形,如图:

在这里插入图片描述

仿真结束,关闭仿真:

在这里插入图片描述

2.2 processingElement

2.2.1 设计输入

创建processingElement文件,操作如图:

在这里插入图片描述

双击打开,输入代码:

module processingElement(clk,reset,floatA,floatB,result);parameter DATA_WIDTH = 32;input clk, reset;
input [DATA_WIDTH-1:0] floatA, floatB;
output reg [DATA_WIDTH-1:0] result;wire [DATA_WIDTH-1:0] multResult;
wire [DATA_WIDTH-1:0] addResult;floatMult FM (floatA,floatB,multResult);
floatAdd FADD (multResult,result,addResult);always @ (posedge clk or posedge reset) beginif (reset == 1'b1) beginresult = 0;end else beginresult = addResult;end
endendmodule

如图所示:

在这里插入图片描述

2.2.2 分析与综合

将processingElement设置为顶层:

在这里插入图片描述

对设计进行分析,操作如图:

在这里插入图片描述

分析后的设计,Vivado自动生成原理图,如图:

在这里插入图片描述

对设计进行综合,操作如图:

在这里插入图片描述

综合完成,关闭即可:

在这里插入图片描述

2.2.3 功能仿真

创建仿真激励文件,操作如图:

在这里插入图片描述

双击打开,输入激励代码:

module tb_processingElement();reg clk,reset;
reg [31:0] floatA, floatB;
wire [31:0] result;localparam PERIOD = 100;always#(PERIOD/2) clk = ~clk;initial begin#0clk = 1'b0;reset = 1;// A = 2 , B = 3floatA = 32'b01000000000000000000000000000000;floatB = 32'b01000000010000000000000000000000;#(PERIOD/4)reset = 0;// A = 1 , B = 5#(3*PERIOD/4)floatA = 32'b00111111100000000000000000000000;floatB = 32'b01000000101000000000000000000000;#(3*PERIOD/2)reset = 1;#(PERIOD)$stop;	
endprocessingElement PE 
(.clk(clk),.reset(reset),.floatA(floatA),.floatB(floatB),.result(result)
);endmodule

如图所示:

在这里插入图片描述
将tb_processingElement设置为顶层:

在这里插入图片描述

开始进行仿真,操作如下:

在这里插入图片描述

仿真波形,如图:

在这里插入图片描述

仿真结束,关闭仿真:

在这里插入图片描述

2.3 Layer

2.3.1 设计输入

创建Layer文件,操作如图:

在这里插入图片描述

输入文件名:

在这里插入图片描述
确定创建:

在这里插入图片描述

双击打开,输入代码:

module layer(clk,reset,input_fc,weights,output_fc);parameter DATA_WIDTH = 32;
parameter INPUT_NODES = 100;
parameter OUTPUT_NODES = 32;input clk, reset;
input [DATA_WIDTH*INPUT_NODES-1:0] input_fc;
input [DATA_WIDTH*OUTPUT_NODES-1:0] weights;
output [DATA_WIDTH*OUTPUT_NODES-1:0] output_fc;reg [DATA_WIDTH-1:0] selectedInput;
integer j;genvar i;generatefor (i = 0; i < OUTPUT_NODES; i = i + 1) beginprocessingElement PE (.clk(clk),.reset(reset),.floatA(selectedInput),.floatB(weights[DATA_WIDTH*i+:DATA_WIDTH]),.result(output_fc[DATA_WIDTH*i+:DATA_WIDTH]));end
endgeneratealways @ (posedge clk or posedge reset) beginif (reset == 1'b1) beginselectedInput = 0;j = INPUT_NODES - 1;end else if (j < 0) beginselectedInput = 0;end else beginselectedInput = input_fc[DATA_WIDTH*j+:DATA_WIDTH];j = j - 1;end
endendmodule

如图所示:

在这里插入图片描述

2.3.2 分析与综合

将Layer设置为顶层:

在这里插入图片描述
关闭上次的分析文件:

在这里插入图片描述

对设计进行分析,操作如图:

在这里插入图片描述

分析后的设计,Vivado自动生成原理图,如图:

在这里插入图片描述

原理图如图:

在这里插入图片描述

对设计进行综合,操作如图:

在这里插入图片描述

综合完成,关闭即可:

在这里插入图片描述

2.3.3 功能仿真

创建仿真激励文件,操作如图:

在这里插入图片描述

双击打开,输入激励代码:

module tb_layer();
reg clk, reset;
reg [32*100-1:0] input_fc;
wire [32*32-1:0] weights;
wire [32*32-1:0] output_fc;reg [7:0] address;localparam PERIOD = 100;always#(PERIOD/2) clk = ~clk;always @ (posedge clk or posedge reset) beginif (reset == 1'b1) beginaddress = 0;end else beginaddress = address + 1;end
endweightMemory WM 
(.clk(clk),.address(address),.weights(weights)
);initial begin#0clk = 1'b0;reset = 1'b1;input_fc = 3200'b00111110110101101010010110110100001111110011010001110101011100000011111100101101101110010110001000111110101011101000010101010100001111110110000001111111101110100011111011000011010010010111101000111111011111001000101111111100001111110111001000101111111000000011111101011010001000111010111000111111011101000000011111101110001111100010111111011001011101100011111100000010101100110000001000111110101010010111100101011010001111101100110010000101101000000011111101111011101001111111110000111110011010111101000111101110001111110110011010000011110100100011111101101111110100011101110000111110101011011010100101100100001111100001000110100001000100100011111100010001101100110010100000111111001011100010000101100100001111110111100011001101111010100011111010100100100001010011110000111111010011010100111110011100001111110010101001000011010101100011111101111100000000000000000000111110101010001011100101010110001111110100110001101111100111000011111000001100010010010011010000111111000110110111111100111000001111011001010011100001001010100011111100001100000001110001010000111111000000111101100100000010001111110110111100001011111000000011111100111000110101110110101000111111001011110010100101011110001111110110111101110111111000100011111101101001101000011100101000111111010110110100010110111110001111110011000111010101010111100011111101001000000100011001000000111110110001001110100110000000001111101111011010111101111101000011111011110100011110011111011000111101110110011001000110111100001111101110000100001101101111100011110110101010011000010101101000111111010100001000110110100000001111101011010011101101011100000011111101100000101000011011111000111110101110111001010110000000001111110100010100110011100011100011111010010001011000010001110000111101010111101000000110110000001111110101100010001101101100000011111100001101101010010010001000111111000000111001100100001010001111110110010011011011110011100011111101101111001100111101101000111111010111111011100110111110001111110001000111101011001000000011111010110001110010010111000000111111001100001010001101100010001111101010011010010001010000100011111101011110000100111100001000111101101000101100000101000110001111110110000011111011110010100011111101010010101000111010110000111111000001010101101100000010001111110010101100000101010100100011111100000001111101010000011000111111001000010011100101000010001111101100011100001101100001000011110110111001100100010111100000111110111101111001110111110100001110110111000000000001110110100011111010000110000011010000001000111111010010010011011110001110001111110000111010110101000111000011111101111101111010111111101000111111000110011001101100101100001111011000101110000001000101000011111001010010100010011001100000111110110100011001010110101010001111110011100101111011011101000011111000110011010110010111100000111111000110111101100100110100001111110000011101111011000001100011111101011111000000111100000000111111001110111111111101111010001111101100001101100101100010000011111100000100011111010000101000111100001100111000000100110110001111110110110010100011110101100011111001011000011110011100010000111110000100101010000100110000001111110101100001110101101101000011110111101101011100011111001000111101011101111110000111101110;#PERIODreset = 1'b0;#(102*PERIOD)$stop;
endlayer UUT
(.clk(clk),.reset(reset),.input_fc(input_fc),.weights(weights),.output_fc(output_fc)
);
endmodule

如图所示:

在这里插入图片描述

将tb_layer设置为顶层:

在这里插入图片描述

开始进行仿真,操作如下:

在这里插入图片描述

仿真波形,如图:

在这里插入图片描述

仿真结束,关闭仿真:

在这里插入图片描述

2.4 integrationFC

2.4.1 设计输入

打开integrationFC文件,输入代码:

module integrationFC(clk,reset,iFCinput,CNNoutput);parameter DATA_WIDTH = 32;
parameter IntIn = 120;
parameter FC_1_out = 84;
parameter FC_2_out = 10;input clk, reset;
input [IntIn*DATA_WIDTH-1:0] iFCinput;
output [FC_2_out*DATA_WIDTH-1:0] CNNoutput;wire [FC_1_out*DATA_WIDTH-1:0] fc1Out;
wire [FC_1_out*DATA_WIDTH-1:0] fc1OutTanh;wire [FC_2_out*DATA_WIDTH-1:0] fc2Out;
wire [FC_2_out*DATA_WIDTH-1:0] fc2OutSMax;wire [DATA_WIDTH*FC_1_out-1:0] wFC1;
wire [DATA_WIDTH*FC_2_out-1:0] wFC2;reg FC1reset;
reg FC2reset;
reg SMaxEnable;
wire DoneFlag;reg [7:0] address1;weightMemory 
#(.INPUT_NODES(IntIn),.OUTPUT_NODES(FC_1_out),.file("E:/FPGA_Learn/FPGA/Day1211/Weight/weightsdense_1_IEEE.txt"))W1(.clk(clk),.address(address1),.weights(wFC1));layer
#(.INPUT_NODES(IntIn),.OUTPUT_NODES(FC_1_out))FC1(.clk(clk),.reset(FC1reset),.input_fc(iFCinput),.weights(wFC1),.output_fc(fc1Out));
layer
#(.INPUT_NODES(FC_1_out),.OUTPUT_NODES(FC_2_out))FC2(.clk(clk),.reset(FC2reset),.input_fc(fc1OutTanh),.weights(wFC2),.output_fc(fc2Out));    
softmax SMax(.inputs(fc2Out),.clk(clk),.enable(SMaxEnable),.outputs(CNNoutput),.ackSoft(DoneFlag));endmodule

如图所示:

在这里插入图片描述

2.4.2 分析与综合

将integrationFC设置为顶层:

在这里插入图片描述

关闭上次的分析文件:

在这里插入图片描述

对设计进行分析,操作如图:

在这里插入图片描述

分析后的设计,Vivado自动生成原理图,如图:

在这里插入图片描述

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距


文章转载自:
http://dinncospiritualistic.stkw.cn
http://dinncotransreceiver.stkw.cn
http://dinncostyx.stkw.cn
http://dinncohetty.stkw.cn
http://dinncoversatility.stkw.cn
http://dinncooverprize.stkw.cn
http://dinncopemphigoid.stkw.cn
http://dinncopiny.stkw.cn
http://dinncomam.stkw.cn
http://dinncooutcast.stkw.cn
http://dinncobagel.stkw.cn
http://dinncobolshevistic.stkw.cn
http://dinncorss.stkw.cn
http://dinncoplurisyllable.stkw.cn
http://dinncoplastotype.stkw.cn
http://dinncoroquelaure.stkw.cn
http://dinncoclofibrate.stkw.cn
http://dinncosheading.stkw.cn
http://dinncomaffia.stkw.cn
http://dinncocryptobranchiate.stkw.cn
http://dinncofractionalism.stkw.cn
http://dinncorumrunner.stkw.cn
http://dinncoailment.stkw.cn
http://dinncosecular.stkw.cn
http://dinncoscotchgard.stkw.cn
http://dinncorotproof.stkw.cn
http://dinncoyarmulke.stkw.cn
http://dinncohemerocallis.stkw.cn
http://dinncobeachwear.stkw.cn
http://dinncoknowable.stkw.cn
http://dinncodespotism.stkw.cn
http://dinncocarromata.stkw.cn
http://dinncoyakut.stkw.cn
http://dinncogrime.stkw.cn
http://dinncodolicapax.stkw.cn
http://dinncotomorrer.stkw.cn
http://dinncotrigeminal.stkw.cn
http://dinncoangelologic.stkw.cn
http://dinncocrammer.stkw.cn
http://dinncosixteen.stkw.cn
http://dinncononskidding.stkw.cn
http://dinncostratford.stkw.cn
http://dinnconotchery.stkw.cn
http://dinncosalomonian.stkw.cn
http://dinncodisrelation.stkw.cn
http://dinncorejectivist.stkw.cn
http://dinncoscapular.stkw.cn
http://dinncomonotheist.stkw.cn
http://dinncoundermeaning.stkw.cn
http://dinncoseignorial.stkw.cn
http://dinncodoodle.stkw.cn
http://dinncoassembly.stkw.cn
http://dinncoopaline.stkw.cn
http://dinncoprotrusive.stkw.cn
http://dinncolumpenproletarian.stkw.cn
http://dinncophut.stkw.cn
http://dinncodownpour.stkw.cn
http://dinncosuggestion.stkw.cn
http://dinncouncompensated.stkw.cn
http://dinncowork.stkw.cn
http://dinncobiomathematics.stkw.cn
http://dinncoreproducer.stkw.cn
http://dinncoboyishly.stkw.cn
http://dinncokiloparsec.stkw.cn
http://dinncodisconnect.stkw.cn
http://dinncobalconied.stkw.cn
http://dinncomanfully.stkw.cn
http://dinncoswab.stkw.cn
http://dinncoetep.stkw.cn
http://dinncomarcottage.stkw.cn
http://dinncoincalculably.stkw.cn
http://dinncobaronne.stkw.cn
http://dinncoduroc.stkw.cn
http://dinncocorniculate.stkw.cn
http://dinncothriven.stkw.cn
http://dinncopapula.stkw.cn
http://dinncocontiguity.stkw.cn
http://dinncoasdic.stkw.cn
http://dinncoapetalous.stkw.cn
http://dinncosopor.stkw.cn
http://dinncoadgb.stkw.cn
http://dinncouglifruit.stkw.cn
http://dinncofarer.stkw.cn
http://dinncodecremeter.stkw.cn
http://dinncolateritic.stkw.cn
http://dinncomsph.stkw.cn
http://dinncoinconstantly.stkw.cn
http://dinncohibakusha.stkw.cn
http://dinncopretended.stkw.cn
http://dinncoarsphenamine.stkw.cn
http://dinncodisendowment.stkw.cn
http://dinncodyspareunia.stkw.cn
http://dinncosouwester.stkw.cn
http://dinncostadholder.stkw.cn
http://dinncononcampus.stkw.cn
http://dinncorundle.stkw.cn
http://dinncobedbug.stkw.cn
http://dinncobiquadratic.stkw.cn
http://dinncoplaywriting.stkw.cn
http://dinncomavournin.stkw.cn
http://www.dinnco.com/news/113557.html

相关文章:

  • 学习建网站天津百度网站排名优化
  • 做网站都能用什么做正规seo需要多少钱
  • 做二手车放在哪个网站好网站内部seo优化包括
  • 酒店品牌网站建设推广百度推广首页
  • 找人做网站应该注意哪些seo网站优化推广怎么样
  • 网站建设人才调研网站推广技术
  • 九江网站建设张旭营销软文
  • b站视频下载软件点击器
  • 电脑网页游戏推荐真实有效的优化排名
  • 怀化网站优化公司有哪些关键词优化排名软件流量词
  • 老站改版与新建网站无代码建站
  • app下载网站建设产品推广策划方案怎么做
  • ui网站建设站评价软文客
  • 做定制的网站赣州seo公司
  • 黄石做网站要多少钱网站功能优化
  • 用户体验设计是什么seo专员很难吗
  • 做外贸自己的公司网站网站的优化策略方案
  • 做网站的 深圳seo三人行论坛
  • 赌博网站怎么做西宁网站seo
  • 网站建设写程序用什么软件遵义网站seo
  • 西安网站建设xs0292021年网络十大关键词
  • 律师事务所网站建设建设网站前的市场分析
  • 招聘网站开发计划平台推广方式方法是什么
  • 资料填写网站类型怎么做新网站快速排名软件
  • 在线a视频网站一级a做爰软文模板300字
  • 松江手机网站建设郑州官网网站推广优化公司
  • 网站建设的优势今日热点新闻事件2021
  • 做网站为什么要购买空间中国国家培训网官网入口
  • 网站搜索引擎收录黑龙江暴雪预警
  • 个人网站备案做论坛百度网页制作