?? ebi.v
字號:
/*********************************************************************************************************
** All right reserve 2008-2009(C)
** Created & maintained by http://www.edaok.net
**=======================================================================================================
** 模 塊 名: ebi
** 描 述: 連接類似于8051MCU外部總線模塊, 輸出從外部總線上接收的地址, 數據, 寫信號線信號, 主要為工
** 程中的其它模塊提供外部總線的地址和數據
**
** 原 作 者: Adeko (from http://www.edaok.net)
** 參 與 者: (...welcome you join in)
**
**=======================================================================================================
********************************************************************************************************/
module ebi (
clk,
ebi_ad,
ebi_addr_h,
ebi_wr_n,
ebi_rd_n,
ebi_ale,
we,
data_in,
data_out,
addr_out
);
input clk; // 全局時鐘
inout [7:0] ebi_ad; // 外部總線的地址/數據線
input [7:0] ebi_addr_h; // 外部總線高位地址線
input ebi_wr_n; // 外部總線寫信號線
input ebi_rd_n; // 外部總線讀信號線
input ebi_ale; // 外部總線地址鎖存信號線
output we; // 寫信號線上升沿有效信號
input [7:0] data_in; // 將要發送到外部總線上的數據
output [7:0] data_out; // 從外部總線上接收的數據
output [15:0] addr_out; // 從外部總線得到的16位地址線
/*
* 綜合成8位鎖存器, 當ALE高電平時鎖存數據, 鎖存外部總線的地址低8位
*/
reg [7:0] rAddrL;
wire [15:0] wAddr;
always @(ebi_ale or ebi_ad)
begin
if (ebi_ale) begin
rAddrL[7:0] <= ebi_ad[7:0];
end
end
assign wAddr[15:0] = {ebi_addr_h[7:0], rAddrL[7:0]}; // 和地址高8位組合比16位地址
/*
* 產生和全局時鐘同步的'寫'信號上升沿信號,提供其它模塊作為寫線有效, 可以進行
* 數據讀寫
*/
wire wWrNeg;
assign wWrNeg = ~ebi_wr_n;
/*
* 輸出端口
*/
assign ebi_ad = (~ebi_rd_n)? data_in : 8'hzz; // 輸出三態, 當'讀'信號為高時輸出數據
assign addr_out[15:0] = wAddr[15:0]; // 輸出外部總線的地址
//assign data_out[7:0] = rData[7:0]; // 輸出外部總線鎖存的數據
assign data_out[7:0] = ebi_ad[7:0];
assign we = wWrNeg; // 輸出寫線有效信號, 同步于全局時鐘
endmodule
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -