下面是我的epp代码,很简单,通过pc机程序控制led亮和灭。附件有份并口资料和我自己的一点总结及本代码的状态机`timescale 1ns / 1ps////////////////////////////////////////////////////////////////////////////////// Company: // Engineer://// Create Date: 16:57:05 10/24/05// Design Name: // Module Name: EPP_and_LED// Project Name: // Target Device: // Tool versions: // Description://// Dependencies:// // Revision:// Revision 0.01 - File Created// Additional Comments:// ////////////////////////////////////////////////////////////////////////////////module EPP_and_LED(Write, Data,Interrupt, Wait, DataStrobe, Reset, AddressStrobe,rst,led,clk/*,t1,t2,t3,t4*/);input Write;inout [7:0] Data;output Interrupt;output Wait;input DataStrobe;input Reset;input AddressStrobe;wire [7:0] Data;/* output t1,t2,t3,t4; //测试信号,用于map到测试用的跳线wire t1,t2,t3,t4; */input clk;//input clock 24Mreg Wait,Interrupt;input rst;//reset switch ,reference PCB,active lowoutput led;//led control,1 to switch led onreg led;parameter Idle=3'b000, Wait_End_AddrWrite=3'b001, Wait_End_AddrRead=3'b010,Wait_End_DataWrite=3'b011, Wait_End_DataRead=3'b100;//EPP state machine,reference EPP specification//internal regreg [2:0] state;reg [7:0] addr; //用于存储EPP地址写reg [7:0] datain;//用于存储EPP数据写reg [7:0] dataout; //用于向EPP Data 输出,可以是数据或者地址always @ (posedge clk)if((!rst)|| (!Reset)) //on PCB rst or Rest from EPPbeginstate=Idle;addr=0;datain=0;dataout=0;led=1;Wait=0;Interrupt=0;endelse //state machinebeginled=datain[0];case(state)Idle: beginWait=0;state=Idle;if(AddressStrobe==0)beginif(Write==1) begin //put address in Data bus heredataout=8'b1011_1111;Wait=1;state=Wait_End_AddrRead;endelse if(Write==0) begin addr=Data;Wait=1;state=Wait_End_AddrWrite;endendelse if(DataStrobe==0)beginif(Write==1) begin //put data in Data bus heredataout=8'b1111_1011;Wait=1; state=Wait_End_DataRead;endelse if(Write==0) begin datain=Data;Wait=1; state=Wait_End_DataWrite;endend endWait_End_AddrRead:beginif(AddressStrobe==1)beginWait=0;state=Idle;end endWait_End_AddrWrite:beginif(AddressStrobe==1)beginWait=0;state=Idle;end endWait_End_DataRead:beginif(DataStrobe==1)beginWait=0;state=Idle;endendWait_End_DataWrite:beginif(DataStrobe==1)beginWait=0;state=Idle;endenddefault: state=Idle;endcaseendassign Data[7:0]=((state==Wait_End_DataRead)||(state==Wait_End_AddrRead))? dataout[7:0]:8'bz;/*assign t1=Write;assign t2=DataStrobe;assign t3=Wait;assign t4=dataout[0]; */endmodule……