⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spiprocess.v

📁 用fpga实现isp接口的源码
💻 V
📖 第 1 页 / 共 2 页
字号:
															mosi=senddata[0];
															bitcounter=bitcounter+5'b1;
															
														end	
													6'b01111:	
														begin	
															SCK=1'b1;
															StatusReg0[0]=miso;
															bitcounter=bitcounter+5'b1;	
															senddata=ramsendtemp;
														end	
													6'b10000:	
														begin	
															SCK=1'b0;
															bitcounter=5'b0;	
															ramdReceivetemp=StatusReg0;	
															sendFinishByte=sendFinishByte+6'b1;
															receiveByte=receiveByte+6'b1;
														end												
												endcase
											end
									end
								else if(sendFinishByte<(SendByteNum-1))			//发送中间字节				
									begin
										case(bitcounter)
											5'b00000:
												begin
													SCK=1'b0;
													mosi=senddata[7];
													SendramCLK=1'b0;	
													SendRDen=1'b1;
													bitcounter=bitcounter+5'b1;									
												end
											5'b00001:	
												begin	
													SCK=1'b0;
													bitcounter=bitcounter+5'b1;													
													SendramCLK=1'b1;			
												end
											5'b00010:	
												begin	
													SCK=1'b1;
													StatusReg0[7]=miso;
													bitcounter=bitcounter+5'b1;
															
												end	
											5'b00011:	
												begin	
													SCK=1'b0;
													mosi=senddata[6];
													bitcounter=bitcounter+5'b1;
													
													ramsendtemp=ramindata;		//读取下一个数据
																										
												end	
											5'b00100:	
												begin	
													SCK=1'b1;
													StatusReg0[6]=miso;
													bitcounter=bitcounter+5'b1;

													SendAddr=SendAddr+6'b1;
													SendramCLK=1'b0;
													SendRDen=1'b0;
													
												end	
											5'b00101:	
												begin	
													SCK=1'b0;
													mosi=senddata[5];
													bitcounter=bitcounter+5'b1;
													
													ReceiveCLK=1'b0;
													ReceiveWen=1'b1;		//准备写入收到的数据
													
												end	
											5'b00110:	
												begin	
													SCK=1'b1;
													StatusReg0[5]=miso;
													bitcounter=bitcounter+5'b1;
													
													
																										
												end	
											5'b00111:	
												begin	
													SCK=1'b0;
													mosi=senddata[4];
													bitcounter=bitcounter+5'b1;
													
													ReceiveData=ramdReceivetemp;   //准备好写入的数据(在时钟上升沿到来前,将数据放到总线上)
												
												end
											5'b01000:	
												begin	
													SCK=1'b1;
													StatusReg0[4]=miso;
													bitcounter=bitcounter+5'b1;	
													
													ReceiveCLK=1'b1;		//第一次写入(为了安全,每个数据写两次)
															
												end	
											5'b01001:	
												begin	
													SCK=1'b0;
													mosi=senddata[3];
													bitcounter=bitcounter+5'b1;
													
													ReceiveCLK=1'b0;
													
												end	
											5'b01010:	
												begin	
													SCK=1'b1;
													StatusReg0[3]=miso;
													bitcounter=bitcounter+5'b1;		
													
													ReceiveCLK=1'b1;		//第二次写入(为了安全,每个数据写两次)
													
												end	
											5'b01011:	
												begin	
													SCK=1'b0;
													mosi=senddata[2];
													bitcounter=bitcounter+5'b1;
													
													ReceiveAddr=ReceiveAddr+6'b1;
													ReceiveCLK=1'b0;
													ReceiveWen=1'b0;				//取消写ram信号													
													
												end	
											5'b01100:	
												begin	
													SCK=1'b1;
													StatusReg0[2]=miso;
													bitcounter=bitcounter+5'b1;		
												end	
											5'b01101:	
												begin	
													SCK=1'b0;
													mosi=senddata[1];
													bitcounter=bitcounter+5'b1;
												end	
											5'b01110:	
												begin	
													SCK=1'b1;
													StatusReg0[1]=miso;
													bitcounter=bitcounter+5'b1;		
												end	
											5'b01111:	
												begin	
													SCK=1'b0;
													mosi=senddata[0];
													bitcounter=bitcounter+5'b1;
												end	
											6'b10000:	
												begin	
													SCK=1'b1;
													StatusReg0[0]=miso;
													bitcounter=bitcounter+5'b1;	
													
												end	
											6'b10001:
												begin
													SCK=1'b0;
													bitcounter=5'b0;
													sendFinishByte=sendFinishByte+6'b1;
													ramdReceivetemp=StatusReg0;	
													senddata=ramsendtemp;
													receiveByte=receiveByte+6'b1;
												end											
										endcase
									end
								else if(sendFinishByte==(SendByteNum-1))		//发送最后一个字节
									begin
										case(bitcounter)
											5'b00000:
												begin
													SCK=1'b0;
													mosi=senddata[7];
													bitcounter=bitcounter+5'b1;										
												end
											5'b00001:	
												begin	
													bitcounter=bitcounter+5'b1;															
												end
											5'b00010:	
												begin	
													SCK=1'b1;
													StatusReg0[7]=miso;
													bitcounter=bitcounter+5'b1;	
												end	
											5'b00011:	
												begin	
													SCK=1'b0;
													mosi=senddata[6];
													bitcounter=bitcounter+5'b1;
													
													ReceiveCLK=1'b0;
													ReceiveWen=1'b1;		//准备写入收到的数据	
													ReceiveData=ramdReceivetemp;												
													
												end	
											5'b00100:	
												begin	
													SCK=1'b1;
													StatusReg0[6]=miso;
													bitcounter=bitcounter+5'b1;
													
													ReceiveCLK=1'b1;		//第一次写入(为了安全,每个数据写两次)
														
													
												end	
											5'b00101:	
												begin	
													SCK=1'b0;
													mosi=senddata[5];
													bitcounter=bitcounter+5'b1;
													
													ReceiveCLK=1'b0;
													
												end	
											5'b00110:	
												begin	
													SCK=1'b1;
													StatusReg0[5]=miso;
													bitcounter=bitcounter+5'b1;
													
													ReceiveCLK=1'b1;		//第二次写入(为了安全,每个数据写两次)	
																										
												end	
											5'b00111:	
												begin	
													SCK=1'b0;
													mosi=senddata[4];
													bitcounter=bitcounter+5'b1;
													
													ReceiveAddr=ReceiveAddr+6'b1;
													ReceiveCLK=1'b0;
													ReceiveWen=1'b0;				//取消写ram信号
												end
											5'b01000:	
												begin	
													SCK=1'b1;
													StatusReg0[4]=miso;
													bitcounter=bitcounter+5'b1;		
												end	
											5'b01001:	
												begin	
													SCK=1'b0;
													mosi=senddata[3];
													bitcounter=bitcounter+5'b1;
												end	
											5'b01010:	
												begin	
													SCK=1'b1;
													StatusReg0[3]=miso;
													bitcounter=bitcounter+5'b1;		
												end	
											5'b01011:	
												begin	
													SCK=1'b0;
													mosi=senddata[2];
													bitcounter=bitcounter+5'b1;
												end	
											5'b01100:	
												begin	
													SCK=1'b1;
													StatusReg0[2]=miso;
													bitcounter=bitcounter+5'b1;		
												end	
											5'b01101:	
												begin	
													SCK=1'b0;
													mosi=senddata[1];
													bitcounter=bitcounter+5'b1;
												end	
											5'b01110:	
												begin	
													SCK=1'b1;
													StatusReg0[1]=miso;
													bitcounter=bitcounter+5'b1;		
												end	
											5'b01111:	
												begin	
													SCK=1'b0;
													mosi=senddata[0];
													bitcounter=bitcounter+5'b1;
												end	
											6'b10000:	
												begin	
													SCK=1'b1;
													StatusReg0[0]=miso;	
													ramdReceivetemp=StatusReg0;	
													bitcounter=bitcounter+5'b1;	
													
													ReceiveCLK=1'b0;
													ReceiveWen=1'b1;		//准备写入收到的数据	
													ReceiveData=ramdReceivetemp;
																								
												end	
											6'b10001:
												begin
													SCK=1'b0;
													bitcounter=bitcounter+5'b1;
																			//写入的数据已经发送完毕,将接收到的最后一个数据写RAM中
													ReceiveCLK=1'b1;		//第一次写入(为了安全,每个数据写两次)
													
												end	
											6'b10010:
												begin
													CSN=1'b1;
													bitcounter=bitcounter+5'b1;
													ReceiveCLK=1'b0;

												end	
											6'b10011:				
												begin
													ReceiveCLK=1'b1;	//第二次写入(为了安全,每个数据写两次)
													bitcounter=bitcounter+5'b1;
												end	
											6'b10100:
												begin
													ready=1'b0;
													bitcounter=5'b0;
													senddatastart=senden;
													sendfilish=1;
													receiveByte=receiveByte+6'b1;
													ReceiveAddr=6'b0;
													ReceiveCLK=1'b0;
													ReceiveWen=1'b0;				//取消写ram信号
													ReceiveReady=1'b1;
												end							
										endcase
									end
							end
					end
				else if(sendfilish==1)					//如果没有数据要发送,那么就循环的读取寄存器中的值,此时最好配置射频在接收的状态。
					begin

	
					end
			end
	end

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -