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

📄 isa_lpt.v

📁 这也是8255的设计,不知道是否好使,希望得到验证
💻 V
字号:

module isa_lpt (ISA_RESET,
            ISA_D,ISA_A,
            ISA_IOR,ISA_READY,ISA_IOW,ISA_AEN,
			
			LPT_RESET,LPT_BUSY,LPT_ACK,LPT_STOB,
			LPT_D,DIR0,DIR8,DIR16,
			a0,a1,a2,a3,a4,a5
	     );

/********ISA PIN  ***********/

inout [7:0] ISA_D;
input [19:0] ISA_A;
input ISA_IOR;
input ISA_IOW;
input ISA_RESET;
input ISA_AEN;
inout ISA_READY;

/********LPT PIN  ***********/
output LPT_RESET;
input  LPT_BUSY;
input  LPT_ACK;
output LPT_STOB;
output [7:0] LPT_D;
output DIR0;
output DIR8;
output DIR16;
output a0;
output a1;
output a2;
output a3;
output a4;
output a5;

/******************************/

wire ISA_IOCS16;
wire LPT_DATA_CS;
wire LPT_STOB_CS;
wire LPT_BUSY_CS;
wire LPT_ACK_CS;
reg [7:0] DATA_reg;

/* ISA Bus Logic*/

assign ISA_IOCS16 = 1'h0;
assign LPT_DATA_CS = ((ISA_A==20'h0378) && !ISA_AEN && !ISA_IOW) ? 0 : 1;
assign LPT_STOB_CS = ((ISA_A==20'h0379) && !ISA_AEN && !ISA_IOW);
assign LPT_BUSY_CS = ((ISA_A==20'h037A) && !ISA_AEN && !ISA_IOR);
assign LPT_ACK_CS =  ((ISA_A==20'h037B) && !ISA_AEN && !ISA_IOR);

assign ISA_IOCS16 = ((ISA_A>=20'h0378) && (ISA_A<=20'h037B) && !ISA_AEN ) ? 1 : 1'bZ;
assign ISA_READY = 1'bZ;
/******* Host read BUSY and ACK of printer*************/
assign ISA_D[0] = LPT_BUSY_CS ? LPT_BUSY : 1'bZ;
assign ISA_D[1] = LPT_ACK_CS ?  LPT_ACK  : 1'bZ;

/*************Output data to printer***************/
always @ (posedge LPT_DATA_CS)
  begin
  DATA_reg[7:0] <= #1 ISA_D[7:0];
  end

/****数据送出后,要产生 STOB脉冲,才能打入打印机******/
assign LPT_D = DATA_reg;
assign LPT_STOB = !LPT_STOB_CS;

/**************************/

assign DIR0=1'h0;
assign DIR8=1'h1;
assign DIR16=1'h0;
assign a0=1'h0;
assign a1=1'h0;
assign a2=1'h0;
assign a3=1'h0;
assign a4=1'h0;
assign a5=1'h0;
endmodule //of glue

⌨️ 快捷键说明

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