FPGA project : fifo_sum

实验目标:

col(列) = 4 ;line(行) = 5。相邻三行,按列求和。输出新的数据流。

实现方法:

通过rs232通信协议,输入数据流。第一行存进fifo1,第二行存进fifo2.当输入第三行第一个数据的时候,从fifo1和ffo2中读数据,并于当前输入数据相加,并输出结果与标志信号。

设计中注意的事情:

1,这个fifo,读写信号同时拉高,我进行功能仿真时,它是写满后,同时拉高,写不进数据。我放一张仿真图:

 所以我设计的时序图,fifo1和fifo2都是先读出数据,然后再写数据。

2,数据与标志信号在设计的时候,要注意时序上的对齐。这种小工程,仿真时,时序没问题没问题,上板子后出错,我觉得应该不是时序上的问题(亚稳态)。应该是代码的问题。

因为我在调用之前的uart_rs232模块,修改了参数,结果上板子出错了。就是这个uart模块的问题。苦恼了很久,一开始以为是fifo_sum的问题。我的写法和野火教程里是不完全一样的。

3,大于2的数字,尽量用参数parameter定义。在这方面,吃了大亏(uart模块又花了一个晚上重新写的)。

模块框图:

时序图:

 

代码: 

module uart_rx(input       wire            sys_clk   ,input       wire            sys_rst_n ,input       wire            rx        ,output      reg             po_flag   ,output      reg     [7:0]   po_data    
);// parameterparameter   CLK_UART = 50_000_000     ,BPS      = 9600           ;localparam  MAX_BPS  = CLK_UART / BPS ;// reg signal definereg             rx_reg1 ;reg             rx_reg2 ;reg             rx_reg3 ;wire            start   ;reg             work_en ;reg     [12:0]  cnt_bps ;reg     [ 3:0]  cnt_bit ;reg             bit_flag;reg     [ 7:0]  rx_data ; // 对rx_reg3采样,把串行数据转化为8bit并行数据。reg             rx_flag ; // 转化完拉高一个时钟周期。/********************************************************/// reg             rx_reg1 ;// reg             rx_reg2 ;// reg             rx_reg3 ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) beginrx_reg1 <= 1'b1 ; // 由于空闲状态,rx是高电平。rx_reg2 <= 1'b1 ;rx_reg3 <= 1'b1 ;end else beginrx_reg1 <= rx      ;rx_reg2 <= rx_reg1 ;rx_reg3 <= rx_reg2 ;endend// reg             start   ; // 检测到下降沿,拉高一个sys_clk.assign start = ~rx_reg2 && rx_reg3 ;// reg             work_en ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) work_en <= 1'b0 ;else if((cnt_bit == 4'd0 && start) || (cnt_bit == 4'd8 && bit_flag)) // 正常来讲,这个两个条件应该是交替出现的。work_en <= ~work_en ;else work_en <= work_en ;end// reg     [12:0]  cnt_bps ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) cnt_bps <= 13'd0 ;else if(work_en && cnt_bps == (MAX_BPS - 1))cnt_bps <= 13'd0 ;else if(work_en)cnt_bps <= cnt_bps + 1'b1 ;else cnt_bps <= 13'd0 ;end// reg             bit_flag;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)bit_flag <= 1'b0 ;else if(cnt_bps == MAX_BPS - 1) // 波特率计数器的最大值bit_flag <= 1'b1 ;else bit_flag <= 1'b0 ;end// reg     [ 3:0]  cnt_bit ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)cnt_bit <= 4'd0 ;else if(bit_flag && cnt_bit == 4'd8)cnt_bit <= 4'd0 ;else if(bit_flag)cnt_bit <= cnt_bit + 1'b1 ;else cnt_bit <= cnt_bit ;end// reg     [ 7:0]  rx_data ; // 对rx_reg3采样,把串行数据转化为8bit并行数据。// always @(posedge sys_clk or negedge sys_rst_n) begin//     if(~sys_rst_n)//         rx_data <= 8'd0 ;//     else if(work_en == 1'b1 && (cnt_bit >= 1) && (cnt_bps == MAX_BPS/2))//             rx_data <= {rx_reg3,rx_data[7:1]} ; // 由于rx是先发低位,所以rx_reg3放在前面.右移。//     else if(work_en == 1'b1 && (cnt_bit >= 1))//             rx_data <= rx_data ;//     else //         rx_data <= rx_data ;// endalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)rx_data <= 8'd0 ;else if(work_en == 1'b1 && (cnt_bit >= 1)) beginif(cnt_bps == MAX_BPS/2)rx_data <= {rx_reg3,rx_data[7:1]} ;else rx_data <= rx_data ;end else beginrx_data <= rx_data ;end end// reg             rx_flag ; // 转化完拉高一个时钟周期。always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) rx_flag <= 1'b0 ;else if(cnt_bit == 4'd8 && bit_flag)rx_flag <= 1'b1 ;else rx_flag <= 1'b0 ; end/***********************************************************/// output signal// po_falg   ,always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) po_flag <= 1'b0 ;else if(rx_flag) // 可以理解为打一拍子或者使用时序逻辑采样po_flag <= 1'b1 ;elsepo_flag <= 1'b0 ;end// po_data    always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) po_data <= 8'd0 ;else if(rx_flag) // 可以理解为打一拍子或者使用时序逻辑采样po_data <= rx_data ;elsepo_data <= po_data ; // 可以归零,也可以保持。end
endmodule
module uart_tx (input       wire            sys_clk     ,input       wire            sys_rst_n   ,input       wire            pi_flag     ,input       wire    [7:0]   pi_data     ,output      reg             tx          
);// parameterparameter   SUB_1K   = 1000           , // 缩减第十位,空闲位的时间。CLK_UART = 50_000_000     ,BPS      = 9600           ;localparam  MAX_BPS  = CLK_UART / BPS ;// reg signal definereg             pi_flag_reg1 ;reg     [ 7:0]  pi_data_reg1 ;reg             work_en      ;reg     [12:0]  cnt_bps      ;reg     [ 3:0]  cnt_bit      ;reg             bit_flag     ;/**********************************************/// reg             pi_flag_reg1 ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)pi_flag_reg1 <= 1'b0 ;else pi_flag_reg1 <= pi_flag ;end// reg             pi_data_reg1 ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)pi_data_reg1 <= 8'd0 ;else pi_data_reg1 <= pi_data ;end// reg             work_en      ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) work_en <= 1'b0 ;else if(((cnt_bit == 4'd0) && pi_flag_reg1) || (cnt_bit == 4'd9) && (bit_flag))work_en <= ~work_en ;else work_en <= work_en ;end// reg     [12:0]  cnt_bps      ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)cnt_bps <= 13'd0 ;else if(work_en && cnt_bps == MAX_BPS - 1) // 波特率计数器计数到最大值。cnt_bps <= 13'd0 ;else if(work_en)cnt_bps <= cnt_bps + 1'b1 ;else cnt_bps <= 13'd0 ;end// reg             bit_flag     ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)bit_flag <= 1'b0 ;else if((work_en && cnt_bps == MAX_BPS - 1) || (work_en && cnt_bps == MAX_BPS - SUB_1K && cnt_bit == 9))bit_flag <= 1'b1 ;else bit_flag <= 1'b0 ;end// reg     [ 3:0]  cnt_bit      ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)cnt_bit <= 4'd0 ;else if(work_en && bit_flag && cnt_bit == 4'd9) // 传递完第十位,位计数器要归零。cnt_bit <= 4'd0 ;else if(work_en && bit_flag)cnt_bit <= cnt_bit + 1'b1 ;else if(work_en)cnt_bit <= cnt_bit ;else cnt_bit <= 4'd0 ;end/****************************************/// output signal// txalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) tx <= 1'b1 ;else if(work_en) begincase (cnt_bit)0  : tx <= 1'b0 ;1  : tx <= pi_data_reg1[0] ; // 先发最低位。2  : tx <= pi_data_reg1[1] ;3  : tx <= pi_data_reg1[2] ;4  : tx <= pi_data_reg1[3] ;5  : tx <= pi_data_reg1[4] ;6  : tx <= pi_data_reg1[5] ;7  : tx <= pi_data_reg1[6] ;8  : tx <= pi_data_reg1[7] ;9  : tx <= 1'b1 ;default: tx <= 1'b1 ;endcase   end else begintx <= 1'b1 ;endend
endmodule
module fifo_sum(input       wire            sys_clk     ,input       wire            sys_rst_n   ,input       wire    [7:0]   data_in     ,input       wire            data_flag   ,output      reg     [7:0]   po_data     ,output      reg             po_data_falg
);// parameter parameter 	XLINE_SUM = 3 ,MAX_LINE  = 5 ,MAX_COL   = 4 ;// reg signal definereg		[7:0]	cnt_line 	;reg  	[7:0]	cnt_col  	;reg   			rdreq_r    	; // fifo1 fifo2 公用一个读使能。reg    			wrreq1_r 	;reg     [7:0]	dataF1_in_r ;reg    			wrreq2_r    ;reg     [7:0]	dataF2_in_r ;reg     [7:0]	data_in_reg1;reg     [7:0]	data_in_reg2;reg   			flag_sum_r  ;// 例化连线wire   			rdreq       ;wire    [7:0]	dataF1_in   ;wire  			wrreq1 		;wire			empty1 		;wire  			full1  		;wire    [7:0]   dataF1_out  ;wire  	[2:0]	usedw1 		;wire    [7:0]	dataF2_in   ;wire  			wrreq2 		;wire			empty2 		;wire  			full2  		;wire    [7:0]   dataF2_out  ;wire  	[2:0]	usedw2 		;
/*************************************************************/// reg [7:0] cnt_linealways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)cnt_line <= 8'd0 ;else if(data_flag && cnt_col == MAX_COL - 1 && cnt_line == MAX_LINE - 1)cnt_line <= 8'd0 ;else if(data_flag && cnt_col == MAX_COL - 1)cnt_line <= cnt_line + 1'b1 ;else cnt_line <= cnt_line ;end// reg [7:0] cnt_colalways @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)cnt_col <= 8'd0 ;else if(data_flag && cnt_col == MAX_COL - 1)cnt_col <= 8'd0 ;else if(data_flag)cnt_col <= cnt_col + 1'b1 ;else cnt_col <= cnt_col ;end// reg   			rdreq_r    	; // fifo1 fifo2 公用一个读使能。always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)rdreq_r <= 1'b0 ;else if(cnt_line >= XLINE_SUM - 1)rdreq_r <= data_flag ;else rdreq_r <= 1'b0 ;end// reg    			wrreq1_r 	;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)wrreq1_r <= 1'b0 ;else if(cnt_line == 0)wrreq1_r <= data_flag ;else if((cnt_line == (XLINE_SUM - 1) && cnt_col != 0) || (cnt_line > (XLINE_SUM - 1) && cnt_line <= (MAX_LINE - 2)) || (cnt_line == (MAX_LINE - 1) && cnt_col == 0))wrreq1_r <= wrreq2_r ;else wrreq1_r <= 1'b0 ;end// reg     [7:0]	dataF1_in_r ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)dataF1_in_r <= 8'd0 ;else if(cnt_line == 0)dataF1_in_r <= data_in ;else if((cnt_line >= (XLINE_SUM - 1) && cnt_line <= (MAX_LINE - 2)) || (cnt_line == (MAX_LINE - 1) && cnt_col == 0))dataF1_in_r <= dataF2_out ;else dataF1_in_r <= dataF1_in_r ;end// reg    			wrreq2_r    ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)wrreq2_r <= 1'b0 ;else if(cnt_line == 1)wrreq2_r <= data_flag ;else if((cnt_line >= (XLINE_SUM - 1) && cnt_line <= (MAX_LINE - 2)) || (cnt_line == (MAX_LINE - 1) && cnt_col == 0))wrreq2_r <= rdreq_r ;end// reg     [7:0]	dataF2_in_r ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)dataF2_in_r <= 8'd0 ;else if(cnt_line == 1)dataF2_in_r <= data_in ;else if((cnt_line >= (XLINE_SUM - 1) && cnt_line <= (MAX_LINE - 2)) || (cnt_line == (MAX_LINE - 1) && cnt_col == 0))dataF2_in_r <= data_in_reg1 ;else dataF2_in_r <= dataF2_in_r ;end// reg flag_sum_r ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) flag_sum_r <= 1'b0 ;elseflag_sum_r <= rdreq_r ;end
/**********************************************************/// reg     [7:0]   po_data      ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)po_data <= 8'd0 ;else if(flag_sum_r) po_data <= dataF1_out + dataF2_out + data_in_reg2 ;else po_data <= po_data ;end// reg             po_data_falg ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n)po_data_falg <= 1'b0 ;else if(flag_sum_r) po_data_falg <=1'b1 ;else po_data_falg <= 1'b0 ;end// reg     [7:0]	data_in_reg1;// reg     [7:0]	data_in_reg2;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) begindata_in_reg1 <= 8'd0 ;data_in_reg2 <= 8'd0 ;end else begindata_in_reg1 <= data_in      ;data_in_reg2 <= data_in_reg1 ;endend
/*************************************************************/assign	dataF1_in	= dataF1_in_r ;assign	wrreq1		= wrreq1_r	  ;assign	rdreq		= rdreq_r     ;assign	dataF2_in	= dataF2_in_r ;assign	wrreq2		= wrreq2_r	  ;fifo_8x8 fifo_8x8_inst1( // 我测试了一下这个fifo 写满了之后读写信号同时拉高,要写的数据不会被写进去。除非有余量才能同时拉高,并且写入数据。.clock				( sys_clk    ) ,.data				( dataF1_in  ) ,.rdreq				( rdreq      ) ,.wrreq				( wrreq1     ) ,.empty				( empty1     ) ,.full				( full1      ) ,.q					( dataF1_out ) ,.usedw				( usedw1 	 )
);
fifo_8x8 fifo_8x8_inst2(  .clock				( sys_clk    ) ,.data				( dataF2_in  ) ,.rdreq				( rdreq      ) ,.wrreq				( wrreq2     ) ,.empty				( empty2     ) ,.full				( full2      ) ,.q					( dataF2_out ) ,.usedw				( usedw2 	 )
);endmodule
module top(input       wire            sys_clk   ,input       wire            sys_rst_n ,input       wire            rx        ,output      wire            tx        
);// 例化间连线wire            po_flag   ;wire    [7:0]   po_data   ; wire            sum_flag  ;wire    [7:0]   sum_data  ; uart_rx uart_rx_inst(.sys_clk                    ( sys_clk   ) ,.sys_rst_n                  ( sys_rst_n ) ,.rx                         ( rx        ) ,.po_flag                    ( po_flag   ) ,.po_data                    ( po_data   )    
);fifo_sum fifo_sum_inst(.sys_clk                    ( sys_clk   ) ,.sys_rst_n                  ( sys_rst_n ) ,.data_in                    ( po_data   ) ,.data_flag                  ( po_flag   ) ,.po_data                    ( sum_data  ) ,.po_data_falg               ( sum_flag  )
);uart_tx uart_tx_inst(.sys_clk                    ( sys_clk   ) ,.sys_rst_n                  ( sys_rst_n ) ,.pi_flag                    ( sum_flag  ) ,.pi_data                    ( sum_data  ) ,.tx                         ( tx        )          
);endmodule

`timescale 1ns/1ns
module test_top();reg             sys_clk   ;reg             sys_rst_n ;reg             rx        ;wire            tx        ;
// Instantiation
top top_inst(.sys_clk            ( sys_clk   ) ,.sys_rst_n          ( sys_rst_n ) ,.rx                 ( rx        ) ,.tx                 ( tx        )          
);parameter CYCLE = 20 ;defparam  top_inst.uart_rx_inst.CLK_UART = 50_000_0 ;defparam  top_inst.uart_tx_inst.CLK_UART = 50_000_0 ;defparam  top_inst.uart_tx_inst.SUB_1K   = 10       ;task rx_bit ;input   [7:0]   data ;integer i ;for (i = 0;i <= 9 ;i = i  + 1 ) begincase (i)0: rx <= 1'b0 ;1: rx <= data[i - 1];2: rx <= data[i - 1];3: rx <= data[i - 1];4: rx <= data[i - 1];5: rx <= data[i - 1];6: rx <= data[i - 1];7: rx <= data[i - 1];8: rx <= data[i - 1];9: rx <= 1'b1 ;default: rx <= 1'b1 ;endcase#(CYCLE * 52) ;endendtaskinitial beginsys_clk    = 1'b1 ;sys_rst_n <= 1'b0 ;rx        <= 1'b1 ;#( CYCLE * 10 )   ;sys_rst_n <= 1'b1 ;#( 210 )          ;sys_rst_n <= 1'b0 ;#( 10 )           ;#( CYCLE * 10 )   ;sys_rst_n <= 1'b1 ;#( CYCLE * 100  ) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd2) ;rx_bit(8'd2) ;rx_bit(8'd3) ;rx_bit(8'd3) ;rx_bit(8'd4) ;rx_bit(8'd4) ;rx_bit(8'd5) ;rx_bit(8'd5) ;rx_bit(8'd6) ;rx_bit(8'd6) ;rx_bit(8'd7) ;rx_bit(8'd7) ;rx_bit(8'd8) ;rx_bit(8'd8) ;rx_bit(8'd9) ;rx_bit(8'd9) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd2) ;rx_bit(8'd2) ;rx_bit(8'd2) ;rx_bit(8'd2) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd1) ;rx_bit(8'd3) ;rx_bit(8'd3) ;rx_bit(8'd3) ;rx_bit(8'd3) ;rx_bit(8'd3) ;rx_bit(8'd3) ;rx_bit(8'd3) ;rx_bit(8'd3) ;$stop        ;endalways #( CYCLE / 2 ) sys_clk = ~sys_clk ;endmodule

 仿真波形:

忘记截图了。

上板验证:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/96481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Verilog HDL阻塞赋值和非阻塞赋值笔记

1. module test( input wire clk, input wire b, output reg a, output reg c ); always(posedge clk) begin ab; ca; end endmodule 上面的代码在vivado中综合后的电路为&#xff1a; 2. module test( input wire clk, input wire b, outp…

offer突击训练营,给你一个offer的保障,求职跳槽的看过来!

大家好&#xff0c;我是枫哥&#xff0c;&#x1f31f;阿里云技术专家、&#x1f4dd;资深面试官、&#x1f339;Java跳蚤网课堂创始人。拥有多年一线研发经验&#xff0c;曾就职过科大讯飞、美团网、平安等公司。 目前组建的团队&#xff0c;专注Java技术分享&#xff0c…

互联网Java工程师面试题·Memcached篇·第一弹

目录 1、Memcached 是什么&#xff0c;有什么作用&#xff1f; 1.1 memcached 服务在企业集群架构中有哪些应用场景&#xff1f; 1.1.1 作为数据库的前端缓存应用 1.1.2 作业集群的 session 会话共享存储 2、Memcached 服务分布式集群如何实现&#xff1f; 3、Memcach…

【Blender实景合成】会跳舞的神里绫华

效果预览 本文将介绍Blender用于实景合成的工作流程。 先看效果&#xff1a; 神里绫华爬上了我的办公桌 模型和动作资源准备 角色模型 本次主要使用的是原神游戏中&#xff0c;神里绫华的角色模型&#xff0c;该模型米哈游在模之屋网站上进行开源。 下载地址&#xff1a;ht…

1500*B. Zero Array(贪心数学找规律)

Problem - 1201B - Codeforces 解析&#xff1a; 因为每次减少2&#xff0c;如果总和为奇数肯定无法实现。 特例&#xff0c;如果某个数大于其他所有数的总和&#xff0c;同样无法实现。 其他均可实现。 #include<bits/stdc.h> using namespace std; #define int long l…

六、vpp 流表+负载均衡

草稿&#xff01;&#xff01;&#xff01; vpp node其实就是三个部分 1、plugin init 2、set command 3、function 实现功能&#xff0c;比如这里的流表 今天我们再用VPP实现一个流表的功能 一、流表 1.1流表----plugin init VLIB_REGISTER_NODE 注册流表节点 // 注册流…

在CSV文件读取时id读取之后成了‘锘縤d‘,该怎么修改

问题描述 准备用python实现一个小想法&#xff0c;里边数据可能会有点多&#xff0c;也为了代码能成块展示&#xff0c;所以打算写一个读取文件的函数。此时考虑到python中可以直接将CSV格式文件读取成字典的形式&#xff0c;所以尝试了一下。但是中间出现了错误&#xff0c;第…

软件测试|Python自动化测试实现的思路

Python自动化测试常用于Web应用、移动应用、桌面应用等的测试 Python自动化实现思路通常分为以下几步&#xff1a; 1. 确定自动化测试的范围和目标&#xff1a; 首先需要明确需要进行自动化测试的范围和目标&#xff0c;包括测试场景、测试用例、测试数据等。 2. 选择自动化…

详解IDEA git 版本回滚

作者简介 目录 1.git分区 2.未commit&#xff0c;进行回滚 3.commit未push&#xff0c;进行回滚 3.1.undo commit 3.2.reset 4.已commit&push&#xff0c;进行回滚 1.git分区 git的版本回滚其实就是回滚不同的分区&#xff0c;所以在聊git回滚之前我们有必要简单了解…

开源即时通讯IM框架 MobileIMSDK v6.4 发布

一、更新内容简介 本次更新为次要版本更新&#xff0c;进行了若干优化&#xff08;更新历史详见&#xff1a;码云 Release Notes、Github Release Notes&#xff09;。MobileIMSDK 可能是市面上唯一同时支持 UDPTCPWebSocket 三种协议的同类开源IM框架。 二、MobileIMSDK简介…

基于风驱动优化的BP神经网络(分类应用) - 附代码

基于风驱动优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于风驱动优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.风驱动优化BP神经网络3.1 BP神经网络参数设置3.2 风驱动算法应用 4.测试结果&#x…

递归

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;汉诺塔 &#x1f449;&…

java 将字符串转为Base64格式与将Base64内容解析出来

首先要引入依赖包 import java.nio.charset.StandardCharsets; import java.util.Base64;然后对应一下两个代码 将字符串转为Base64 Base64.getEncoder().encodeToString(需要转换的字符串.getBytes(StandardCharsets.UTF_8));将 Base64 字符串解析成原来的内容 byte[] deco…

每日一题 901. 股票价格跨度(中等,单调栈)

理解题目&#xff0c;对于第 i 天&#xff0c;要求的是前 i - 1 天所满足条件的跨度 思路&#xff1a; 暴力搜索的方式是&#xff0c;对于每一个第 i 天都遍历搜索 i - 1&#xff0c; i - 2&#xff0c;…&#xff0c;直到第 j 天大于当前价格优化&#xff0c;考虑哪里进行了…

论文总结:3D Talking Face With Personalized Pose Dynamics

论文解决的问题:大多数现有的3D人脸生成方法只能生成静态头部姿势的3D面部,只有少数几篇文章关注头部姿势的生成,但这些文章也忽略了个体属性。 解决方法:框架由两个独立模块组成:PoseGAN和PGFace。给定输入音频,PoseGAN首先为3D头部生成一个头部姿势序列,然后PGFace利用…

blender光照系统设置

0&#xff09;Viewport Shading设置里面的Lighting下面的参数&#xff1a; Scene Lights,Scene World - Scene Lights是指在渲染模式下是否使用场景中的灯光对象来照亮物体。 - Scene World是指在渲染模式下是否使用场景中的世界设置来作为背景和环境光。如果关闭该选项&#…

数据库基础知识

数据库 什么是数据库, 数据库管理系统, 数据库系统, 数据库管理员? 数据库 : 数据库(DataBase 简称 DB)就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。数据库管理系统 : 数据库管理系统(Database Management System 简称 DBMS)是一种操纵和管理数据库的大…

TL-ER3220G端口映射设置

1、打开IE浏览器或其它浏览器&#xff0c;在地址栏输入192.168.1.1登录路由器的Web管理界面&#xff1b; 2、打开后弹出密码输入框&#xff0c;输入路由器的用户名和密码&#xff0c;出厂默认值为admin/admin&#xff0c;成功登录后将看到路由器的系统状态信息&#xff1b; 3、…

Python中如何获取各种目录路径

最近总是遇到各种路径问题&#xff0c;学习总结一下 文章目录 1. 获取各种目录的方法&#xff1a;2. Python测试脚本&#xff1a; 1. 获取各种目录的方法&#xff1a; 当前工作目录&#xff1a;这是你从哪里运行了你的Python脚本。 current_directory os.getcwd()脚本所在目录…

学习搜狗的workflow,MacBook上如何编译

官网说可以在MacBook上也可以运行&#xff0c;但是编译的时候却有找不到openssl的错误&#xff1a; 看其他博客也有类似的错误&#xff0c;按照类似的思路去解决 问题原因和解决办法 cmake编译的时候&#xff0c;没有找到openssl的头文件&#xff0c;需要设置cmake编译环境下…