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

📄 ram_dp_ar_aw.v

📁 在altera fpga中实现epp模式的并口通信程序
💻 V
字号:
module ram_dp_ar_aw (address_0 , // address_0 Inputdata_0    , // data_0 bi-directionalcs_0      , // Chip Selectwe_0      , // Write Enable/Read Enableoe_0      , // Output Enableaddress_1 , // address_1 Inputdata_1    , // data_1 bi-directionalcs_1      , // Chip Selectwe_1      , // Write Enable/Read Enableoe_1,       // Output Enablesclk,SENV,RESET); //--------------Input Ports----------------------- input [2:0] address_0 ;input cs_0 ;input we_0 ;input oe_0 ; input [2:0] address_1 ;input cs_1 ;input we_1 ;input oe_1 ;input sclk;           input SENV; input RESET;//--------------Inout Ports-----------------------inout [7:0] data_0 ; inout [7:0] data_1 ;//--------------Output Ports-----------------------//--------------Internal variables---------------- reg [7:0] data_0_out ; reg [7:0] data_1_out ;reg [7:0] mem [0:6];//--------------Code Starts Here------------------ // Memory Write Block // Write Operation : When we_0 = 0, cs_0 = 0,oe_0=1always @ (posedge sclk)begin    if(!RESET)	   begin	      mem[0]<=8'b00000000;	      mem[1]<=8'b00000000;	      mem[2]<=8'b00000000;	      mem[3]<=8'b00000000;	      mem[4]<=8'b00000000;	      mem[5]<=8'b00000000;	      mem[6]<=8'b00000000;	   end	else	   begin	      if(SENV)	         begin	            if(!cs_0&&!we_0&&oe_0)	                begin	                   mem[address_0] <= data_0;	                end	            else if(!cs_1&&!we_1&&oe_1)	                begin	                   mem[address_1] <= data_1;	                end	         end	      else	         begin	             mem[0]<=8'b00000000;	             mem[1]<=8'b00000000;	             mem[2]<=8'b00000000;	             mem[3]<=8'b00000000;	             mem[4]<=8'b00000000;	             mem[5]<=8'b00000000;	             mem[6]<=8'b00000000;	         end	   endend/*always @ (address_0 or cs_0 or we_0 or data_0 or address_1 or cs_1 or we_1 or data_1)begin //: MEM_WRITE  if ( !cs_0 && !we_0 )      begin       mem[address_0] <= data_0;     end   else if  (!cs_1 && !we_1)      begin       mem[address_1] <= data_1;     endend*/// Memory Read Block // Read Operation : When we_0 = 1, oe_0 = 0, cs_0 = 0always @ (posedge sclk)begin    if(!RESET)	   begin	      data_0_out <=8'bz;	   end	else	   begin	      if(SENV)	         begin	            if(!cs_0&&we_0&&!oe_0)	                begin	                   data_0_out <= mem[address_0];	                end	            else 	                begin	                   data_0_out <= 0;	                end	         end	      else	         begin	             data_0_out <=8'bz;	         end	   endend/*always @ (address_0 or cs_0 or we_0 or oe_0)begin //: MEM_READ_0  if (!cs_0 && we_0 && !oe_0)      begin        data_0_out <= mem[address_0];      end   else      begin        data_0_out <= 0;      endend */ // Memory Read Block 1 // Read Operation : When we_1 = 1, oe_1 = 0, cs_1 = 0always @ (posedge sclk)begin    if(!RESET)	   begin	      data_1_out <=8'bz;	   end	else	   begin	      if(SENV)	         begin	            if(!cs_1&&we_1&&!oe_1)	                begin	                   data_1_out <= mem[address_1];	                end	            else 	                begin	                   data_1_out <= 0;	                end	         end	      else	         begin	             data_1_out <=8'bz;	         end	   endend/*always @ (address_1 or cs_1 or we_1 or oe_1)begin //: MEM_READ_1  if (!cs_1 && we_1 && !oe_1)      begin        data_1_out <= mem[address_1];      end   else      begin        data_1_out <= 0;      endend*/// Tri-State Buffer control // output : When we_0 = 1, oe_0 = 0, cs_0 = 0assign data_0 = (!cs_0 && !oe_0 && we_0) ? data_0_out : 8'bz; // Tri-State Buffer control // output : When we_0 = 1, oe_0 = 0, cs_0 = 0assign data_1 = (!cs_1 && !oe_1 && we_1) ? data_1_out : 8'bz;endmodule // End of Module ram_dp_ar_aw

⌨️ 快捷键说明

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