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

📄 232-fddi.v

📁 RS232-光纤的CPLD调制解调源程序
💻 V
字号:
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date:    14:22:38 10/07/2007 // Design Name: // Module Name:    App // Project Name: // Target Devices: // Tool versions: // Description: //// Dependencies: //// Revision: // Revision 0.01 - File Created// Additional Comments: ////////////////////////////////////////////////////////////////////////////////////module CANtoFDDI(CAN_RX, CAN_TX, FDDI_RX, FDDI_TX, CLK, LED_TX, LED_RX, SD);	//, Ja,Jb    input CAN_RX;    output CAN_TX;    input FDDI_RX;    output FDDI_TX;    input SD;    input CLK;    output LED_TX;    output LED_RX;	 //output Ja;	 //output Jb;	 	 //CANRX to FDDITX	 reg[3:0] fTX_CLK;	 reg fTX_Start;	 reg fTX_T;	 	 reg fTX_Tem;	 reg fTX_Over;//输出完毕	 reg fTX_N;//输出第N位(001/110)	 //reg FDDI_TX;	 //////////////////	 	 //FDDIRX to CANTX		 reg cTX_Start;	 //reg[7:0] fRX_Bit;	 //reg[3:0] fBit_N;	 reg[3:0] cTX_Data;		 reg[2:0] cTX_DataN;	 	 reg[3:0] fBit_Bit;	 reg fBit_Value;	 	 reg cTX_Tem;	 	 reg LED_RXTem;	 reg LED_TXTem;	 /////////////////	 ////////////////////////////	 //100us延时		//reg TXRTime[7:0];		//reg TXRTime_Start;	 ////////////////////////////		 	 initial	 begin		fTX_CLK=0;		fTX_Start=1;		fTX_Tem=0;				fTX_Over=0;		fTX_N=0;						//fddi rx to CAN tx		cTX_Start=0;//f		//fBit_N=0;		//fRX_Bit=0;		cTX_DataN=0;		cTX_Data=0;		fBit_Bit=0;		//cTX_Data=0;		LED_RXTem=0;		LED_TXTem=0;				//TXRTime=0;		//TXRTime_Start=0;	 end/////////////////////////////*///////////////////////////////	 //function toBit	 function toBit;		input [1:0] Bit_Tem;		begin		case (Bit_Tem)			2'b00,			2'b10 : toBit=0;			2'b11,			2'b01 : toBit=1;			default : toBit=0;		endcase		end	 endfunction///////////////////////////////*//////////////////////////////////FDDIRX to CANTX 检测上升和下降沿 always @(negedge CLK)//  cTX_Start 	begin		if (fBit_Bit==0)			begin				fBit_Value=~FDDI_RX;		//	编码					fBit_Bit=1;			end		else			begin									if (fBit_Value==FDDI_RX)  //						begin							fBit_Value=fBit_Value>>1;							fBit_Bit=3;							fBit_Value=~FDDI_RX;							//cTX_Data=0;							//cTX_DataN=0;													end					else						begin																	fBit_Bit=fBit_Bit+1;							if (fBit_Bit>3)								begin									if (cTX_DataN<3)										begin											if (fBit_Value==1)												begin													cTX_Data[cTX_DataN]=1;																									end											else												begin													cTX_Data[cTX_DataN]=0;												end											cTX_DataN=cTX_DataN+1;											if (cTX_DataN>2)												begin													if (cTX_Data==3'b110)														begin															cTX_Tem=1;															cTX_DataN=0;															LED_TXTem=1;														end													else														begin															if (cTX_Data==3'b001)																begin																	cTX_Tem=0;																	cTX_DataN=0;																	LED_TXTem=0;																end															else																begin																	cTX_Data=cTX_Data>>1;																	cTX_DataN=2;																end														end																																						end										end									fBit_Bit=0;						      end//fBit_Bit>7										      end//(fBit_Value==FDDI_RX)	    end//fBit_Bit==0	end//always ///////////////////////////////////////////////////////////////////////////FDDI_RX CLK always @(negedge CLK)//GET F 	 begin	 			//cTX_Start=!cTX_Start;						if (fTX_CLK<1)//8分频				begin					fTX_CLK=fTX_CLK+1;				end			else				begin					fTX_Start=~fTX_Start;					fTX_CLK=0;				end			 end	 ///////////////////////////////////////////	 	 ///////////////////////////////////////////	 always @(negedge fTX_Start)// CAN_RX to FDDI_TX	 begin				if (fTX_Over==0) 			begin				if (CAN_RX==0)//RS232低电平时为1					begin						fTX_T=1;						LED_RXTem=1;					end				else 					begin						fTX_T=0;							LED_RXTem=0;					end				fTX_Tem=fTX_T;//输出第1位				fTX_Over=1;//未输出完				fTX_N=0;// 乱桓鲋芷谑涑龅2位			end		else			begin				if (fTX_T==1)					begin						if (fTX_N==0)							begin								fTX_Tem=1;								fTX_N=1;//输出下一位							end						else							begin								fTX_Tem=0;								fTX_Over=0;//输出完毕							end					end				else					begin						if (fTX_N==0)							begin								fTX_Tem=0;								fTX_N=1;							end						else							begin								fTX_Tem=1;								fTX_Over=0;							end					end			end				 end//CANRX to FDDITX		////////////////////////////	//CANRX to FDDITX	assign FDDI_TX=fTX_Tem;//	//	编码1=001	当编码1=110时 FDDI_TX=~fTX_Tem;	////////////////////////////		///////////////////////////	//FDDIRX to CANTX	assign CAN_TX=cTX_Tem && SD;//编码1=001	当编码1=110时 CAN_TX=~(cTX_Tem && SD)		//assign Ja=FDDI_RX;//~LED_TXTem;//~fTX_Tem;//	//assign Jb=CLK;//	//assign J4=cTX_Tem;	///////////////////////////		///////////////////////////	assign LED_TX=~LED_TXTem;//LED_TXTem;//CAN_TX为高电平不亮	assign LED_RX=~LED_RXTem;//LED_RXTem;//RX=1不亮,RX=0亮	///////////////////////////endmodule

⌨️ 快捷键说明

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