亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pci_mast.tf

?? VHDLVERILOG語言實現的CARDBUS的IP源碼,已經實現現場應用
?? TF
?? 第 1 頁 / 共 3 頁
字號:
//------------------------------------------------------------------------------
//
// File : pci_mast.tf
// Last Modification: 06/26/2001
//
// Created In SpDE Version: SpDE 8.22
// Author :	Richard Yuan, QuickLogic Corporation
// Copyright (C) 2001, Licensed customers of QuickLogic may copy and modify
// this file for use in designing with QuickLogic devices only.
//	
// Description :
//	This is a PCI master model.
//	Please see "The QL5064 PCI Bus Simulation Environment" for detailed informaiton.
//
// Hierarchy:
//	This file is to be included by pci5(3/4)32_208.tf.
//
// History:	
//	Date	        Author					Version
//  06/26/01		Richard Yuan			1.0
//		- Header reorganized to conform to coding standard.
//
//------------------------------------------------------------------------------


`timescale 1ns/1ns	

// ----------------------------------------------------------------------------
//  PCI bus commands:
// ----------------------------------------------------------------------------

`define  COMMAND_INTERRUPT_ACK    4'b0000
`define  COMMAND_SPECIAL_CYCLE    4'b0001
`define  COMMAND_IO_READ          4'b0010
`define  COMMAND_IO_WRITE         4'b0011
`define  COMMAND_CMD_RESERVED_1   4'b0100
`define  COMMAND_CMD_RESERVED_2   4'b0101
`define  COMMAND_MEM_READ         4'b0110
`define  COMMAND_MEM_WRITE        4'b0111
`define  COMMAND_CMD_RESERVED_3   4'b1000
`define  COMMAND_CMD_RESERVED_4   4'b1001
`define  COMMAND_CONFIG_READ      4'b1010
`define  COMMAND_CONFIG_WRITE     4'b1011
`define  COMMAND_MEM_READ_MULT    4'b1100
`define  COMMAND_DUAL_ADDR        4'b1101
`define  COMMAND_MEM_READ_LINE    4'b1110
`define  COMMAND_MEM_WR_INVALID   4'b1111


module tf_pci_master (
	pci_clk,
	pci_ad,
	pci_cbe,
	par,
	par_64,
	frame_l,
	irdy_l,
	trdy_l,
	stop_l,
	devsel_l,
	idsel,
	req64_l,
	ack64_l,
	req_l,
	gnt_l,
        reset_l
	);

parameter OutDly = 2;  // 2ns clock to out (PCI Min)	
parameter RW_BUFF_SIZE_ADDR_BITS = 8;
parameter RW_BUFF_SIZE = (1<<RW_BUFF_SIZE_ADDR_BITS);
	
input pci_clk;
inout [63:0] pci_ad;
output [7:0] pci_cbe;
inout par;
inout par_64;
inout frame_l;
inout irdy_l;
input trdy_l;
input stop_l;
input devsel_l;
inout idsel;
output req64_l;
input ack64_l;
output req_l;
input gnt_l;
input reset_l;

reg [63:0] pci_ad_reg;
reg pci_ad_oe;
wire [63:0] #4 pci_ad;
assign pci_ad[63:0] =  (pci_ad_oe ? pci_ad_reg[63:0] : 64'hzzzzzzzzzzzzzzzz);

reg [7:0] pci_cbe_reg;
reg pci_cbe_oe;
wire [7:0] #4 pci_cbe;
assign pci_cbe[7:0] =  (pci_cbe_oe ? pci_cbe_reg[7:0] : 8'hzz);

reg frame_reg;
reg frame_oe;
wire #4 frame_l;
assign frame_l =  (frame_oe ? ~frame_reg : 1'bz);  // Added delay BDS

reg irdy_reg;
reg irdy_oe;
wire #4 irdy_l;
assign irdy_l =  (irdy_oe ? ~irdy_reg : 1'bz); // Added delay BDS

reg idsel_reg;
reg idsel_oe;
wire #4 idsel;
assign idsel = (idsel_oe ? idsel_reg : 1'bz); // Error, this is wrong...

reg req_reg;
reg req64_oe;

reg par_oe_reg;
reg par64_oe_reg;
reg par_reg;
reg par64_reg;

integer bad_parity_phase;
integer bad_parity_phase_dly;
reg bad_par;
reg bad_par64;
integer phase_count;
reg frame_dly;
reg irdy_dly;
reg irdy_oe_dly;

wire frame; assign frame = ~frame_l;
wire irdy; assign irdy = ~irdy_l;
wire trdy; assign trdy = ~trdy_l;
wire devsel; assign devsel = ~devsel_l;
wire stop; assign stop = ~stop_l;
wire reset; assign reset = ~reset_l;
wire gnt; assign gnt = ~gnt_l;

assign req_l =  (reset) ? 1'b1 : (~req_reg);

initial begin
	pci_ad_oe <= 1'b0;
        pci_cbe_oe <= 1'b0;
	frame_oe <= 1'b0;
	idsel_oe <= 1'b0;
	irdy_oe <= 1'b0;
	req64_oe <= 1'b0;
	req_reg <= 1'b0;
end


// ----------------------------
// registers set by test fixture
// to force 32/64 bit behavior
// ----------------------------
// Two ways of getting 32 bit access:
//    a) not asserting req64
//    b) asserting req64 but not getting ack64
//       (ie. disconnect req64 between here and bus)
//

reg force_32;
reg disconnect_req64;

wire local_req64_l;
assign local_req64_l = (req64_oe & frame_oe ? 1'b0 : 1'bz);
assign req64_l = disconnect_req64 ? 1'b1 : local_req64_l;


// --

reg m64_local;

initial begin
        force_32 <= 1'b0;
        disconnect_req64 <= 1'b0;
end

//If bus is 32bit, NEVER assert req64!!!
always @(negedge reset) begin
    if (req64_l == 1'b1) force_32 = 1'b1;
end


// ----------------------------
// tasks called by test fixture
// to force parity errors on bus
// ----------------------------

wire par_reg_with_error = (((bad_parity_phase_dly == phase_count) & bad_par) ? ~par_reg : par_reg);  // mess up parity if we're supposed to
wire par64_reg_with_error = (((bad_parity_phase_dly == phase_count) & bad_par64) ? ~par64_reg : par64_reg);  // mess up parity if we're supposed to

wire perr_injected = par_reg_with_error ^ par_reg;
wire perr64_injected = par64_reg_with_error ^ par64_reg;

assign par =  (par_oe_reg ? par_reg_with_error : 1'bz);
assign par_64 =  (par64_oe_reg ? par64_reg_with_error : 1'bz);

initial bad_parity_phase = 0;

//task generate_bad_parity(phase);
task generate_bad_parity;

input phase;
integer phase;

begin
        bad_parity_phase <= phase;
        bad_par <= 1'b1;
        bad_par64 <= 1'b0;
end
endtask

//task generate_bad_parity64(phase);
task generate_bad_parity64;
input phase;
integer phase;

begin
        bad_parity_phase <= phase;
        bad_par <= 1'b0;
        bad_par64 <= 1'b1;
end
endtask



// --------------------------

always @(posedge pci_clk or negedge reset_l)
	if ( ~reset_l ) begin
		par_reg <= 1'b0;
		par_oe_reg <= 1'b0;
		par64_reg <= 1'b0;
		par64_oe_reg <= 1'b0;
		frame_dly <= 1'b0;
		irdy_dly <= 1'b0;
		irdy_oe_dly <= 1'b0;
	end else begin
		par_oe_reg <= pci_ad_oe;
		par64_oe_reg <= pci_ad_oe;

		bad_parity_phase_dly <= bad_parity_phase;  // we use a delayed version because when the
		                                           // user sets the b_p_p to 1, we're at 1 coming
		                                           // into the transaction. Its either this or 
		                                           // have a special case that checks for b_p_p = 1

		frame_dly <= frame;
		irdy_dly <= irdy;
		irdy_oe_dly <= irdy_oe;

        if ((frame && !frame_dly) || (!frame && !irdy)) phase_count <= 1;
//		else if (irdy && (phase_count == 1)) phase_count <= phase_count + 1;
//		else if (irdy && trdy) phase_count <= phase_count + 1;
        else if (trdy || irdy) phase_count <= phase_count + 1; // count address phases and others

		if ((phase_count == bad_parity_phase_dly)) begin
		        bad_parity_phase <= 0;
		        bad_parity_phase_dly <= 0;		        
		        //$display ("Injected parity error at %0t", $time);
                end
                par_reg <= (^pci_ad[31:0]) ^ (^pci_cbe[3:0]);
		par64_reg <= (^pci_ad[63:32]) ^ (^pci_cbe[7:4]);
	end


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

reg fake_a_DAC;
initial fake_a_DAC = 1'b0;

task set_fake_a_DAC;
begin
        fake_a_DAC = 1'b1;
end
endtask

task clear_fake_a_DAC;
begin
        fake_a_DAC = 1'b0;
end
endtask

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

reg [31:0] data_array[RW_BUFF_SIZE-1:0];
reg [3:0] be_array[RW_BUFF_SIZE-1:0];

reg [63:0] start_address;  // field for use in qlpci_target.tf to store individual master's info
reg [63:0] burst_count;    // field for use in qlpci_target.tf to store individual master's info
reg [63:0] command;        // field for use in qlpci_target.tf to store individual master's info

reg burst;
reg [15:0] timeout; 
reg [RW_BUFF_SIZE_ADDR_BITS:0] countleft;
reg [5:0] timeleft;
reg got_devsel;
reg quit;

reg [RW_BUFF_SIZE_ADDR_BITS:0] dwords_transmitted;


//task compare64 (addr, expected, actual, be, pass_fail, quiet, last_data);
task compare64;

input [63:0] addr;
input [63:0] expected;
input [63:0] actual;
input [7:0] be;
inout pass_fail;
input quiet;
output [63:0] last_data;

reg  [63:0] be_mask;
begin

        be_mask = {(be[7] ? 8'hFF: 8'h00),
                   (be[6] ? 8'hFF: 8'h00),
                   (be[5] ? 8'hFF: 8'h00),
                   (be[4] ? 8'hFF: 8'h00),
                   (be[3] ? 8'hFF: 8'h00),
                   (be[2] ? 8'hFF: 8'h00),
                   (be[1] ? 8'hFF: 8'h00),
                   (be[0] ? 8'hFF: 8'h00)};

        if ((expected & be_mask) !== (actual & be_mask)) begin
                pass_fail = 1'b0;
                if (!quiet) begin
                $display ("FAILURE: PCI side quad word data read mismatch at address %0h at time %0t.  Expected: %h, Actual: %h",
                                   addr,
                                   $time,
                                   expected & be_mask,
                                   actual & be_mask);
                $stop;
                end
        end
        //$display ("     COMPARE64 SAYS:");
        //$display ("     addr = %0h at %0t", addr, $time);        
        //$display ("     actual = %0h at %0t", actual, $time);
        //$display ("     be = %0h", be);
        //$display ("     be_mask = %0h", be_mask);

        last_data = actual & be_mask;
        
end
endtask

//task compare (addr, expected, actual, be, pass_fail, quiet, last_data);
task compare;

input [63:0] addr;
input [31:0] expected;
input [31:0] actual;
input [3:0] be;
inout pass_fail;
input quiet;
output [63:0] last_data;

reg  [31:0] be_mask;

begin

        be_mask = {(be[3] ? 8'hFF: 8'h00),
                   (be[2] ? 8'hFF: 8'h00),
                   (be[1] ? 8'hFF: 8'h00),
                   (be[0] ? 8'hFF: 8'h00)};

        if ((expected & be_mask) !== (actual & be_mask)) begin
                pass_fail = 1'b0;
                if (!quiet) begin
                $display ("FAILURE: PCI side double word data read mismatch at address %0h at time %0t.  Expected: %h, Actual: %h",
                                   addr,                
                                   $time,
                                   expected & be_mask,
                                   actual & be_mask);
                        $stop;
                        end
        end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片一区二区梦乃| 亚洲黄色小视频| 色婷婷久久一区二区三区麻豆| 日韩制服丝袜av| 亚洲黄网站在线观看| 国产精品美女视频| 久久久久久久久久美女| 8v天堂国产在线一区二区| 欧美色男人天堂| 色美美综合视频| 99v久久综合狠狠综合久久| 成人午夜精品在线| 国产91色综合久久免费分享| 国产精品原创巨作av| 精品一区二区三区免费毛片爱| 理论电影国产精品| 国产激情一区二区三区四区| 国产麻豆9l精品三级站| www.欧美亚洲| 日本乱人伦一区| 3d动漫精品啪啪一区二区竹菊| 欧美精选一区二区| 久久亚洲一级片| 中文字幕免费观看一区| 国产拍欧美日韩视频二区| 亚洲欧洲成人自拍| 亚洲成人激情综合网| 日本欧洲一区二区| 国产成人av电影| 91福利精品视频| 日韩一级在线观看| 日本一二三四高清不卡| 亚洲伊人伊色伊影伊综合网| 日韩和欧美一区二区三区| 狠狠色丁香久久婷婷综| 99久久综合国产精品| 欧美日韩一区二区在线观看| 久久久精品综合| 亚洲高清免费视频| 国产一区二区成人久久免费影院| 91尤物视频在线观看| 日韩一区二区在线观看视频| 国产精品区一区二区三区| 亚洲一区二区三区免费视频| 国产在线视频一区二区| 精品视频在线看| 欧美激情一区二区| 日韩中文字幕区一区有砖一区 | 99久久综合99久久综合网站| 欧美日韩久久不卡| 国产精品久久久久久久久图文区 | 久久久久一区二区三区四区| 亚洲男人天堂一区| 国产成人av一区| 欧美一区二区黄| 亚洲国产精品影院| 成人中文字幕电影| 欧美xingq一区二区| 亚洲国产综合91精品麻豆| 福利一区在线观看| 欧美第一区第二区| 亚洲成a人片在线观看中文| 成人午夜伦理影院| 久久日一线二线三线suv| 亚洲福利电影网| 日本福利一区二区| 国产精品午夜免费| 成人性色生活片| 国产亚洲精久久久久久| 久久国产精品一区二区| 欧美一二三区在线| 日本中文在线一区| 欧美精品自拍偷拍| 亚洲大片精品永久免费| 欧美视频第二页| 亚洲综合另类小说| 欧美日韩免费观看一区二区三区| 亚洲欧美另类在线| 成人国产视频在线观看| 国产精品久久久久久久久搜平片| 国产成人精品亚洲777人妖| 久久亚洲捆绑美女| 国产成人综合亚洲91猫咪| 久久久久久久精| 成人免费高清视频| 中文字幕一区二区在线播放| 成人精品国产免费网站| 国产精品你懂的| 不卡欧美aaaaa| 亚洲欧美欧美一区二区三区| 91免费精品国自产拍在线不卡| 国产精品日产欧美久久久久| 91在线视频官网| 亚洲午夜免费电影| 91精品国产91久久久久久最新毛片 | 亚洲高清一区二区三区| 欧美日韩成人在线一区| 日本不卡一二三区黄网| 日韩精品一区二区三区视频播放| 久久se精品一区二区| 久久久美女毛片| 91视频国产观看| 午夜视频在线观看一区二区三区| 欧美精品免费视频| 国产成人精品一区二区三区四区 | 婷婷激情综合网| 久久在线免费观看| 成人高清视频在线观看| 亚洲一二三专区| 精品99一区二区三区| 97久久人人超碰| 香蕉加勒比综合久久| 久久精品夜色噜噜亚洲a∨| 成人精品国产免费网站| 午夜久久久影院| 欧美国产一区二区| 欧美日韩国产另类不卡| 国产91在线看| 日韩中文字幕麻豆| 日韩伦理电影网| 日韩午夜精品视频| 成人18视频在线播放| 日本伊人午夜精品| 亚洲色图欧美在线| 精品国产髙清在线看国产毛片| 成人av动漫在线| 国内精品在线播放| 亚洲成a人在线观看| 国产精品久久久久影院老司| 日韩欧美一区二区视频| 91黄视频在线| 高清不卡一区二区| 国模大尺度一区二区三区| 亚洲va韩国va欧美va| 日本一区二区三区高清不卡| 欧美一级欧美三级在线观看 | 亚洲欧美在线视频| 精品99一区二区| 欧美一区二区三区四区五区| 一本久道久久综合中文字幕| 国产一区二区美女| 麻豆视频一区二区| 日韩和欧美一区二区三区| 亚洲精品国产精品乱码不99| 国产精品伦理一区二区| 久久午夜色播影院免费高清 | 精品国产精品网麻豆系列 | 强制捆绑调教一区二区| 亚洲成人在线免费| 亚洲一区二区精品久久av| 亚洲欧美日韩中文字幕一区二区三区| 国产婷婷色一区二区三区| xvideos.蜜桃一区二区| 日韩美女一区二区三区四区| 欧美一区二区三区视频在线| 欧美三级电影在线观看| 一本到一区二区三区| 91精彩视频在线观看| 色综合天天综合网天天狠天天| 91视视频在线观看入口直接观看www | 亚洲欧洲国产日本综合| 中文字幕av在线一区二区三区| 久久蜜桃av一区二区天堂| 26uuuu精品一区二区| 中文字幕精品一区二区精品绿巨人| 久久香蕉国产线看观看99| 久久综合久久鬼色| 国产日产欧美一区二区视频| 一区二区三区国产精华| 国产三级精品视频| 麻豆成人综合网| 精品国产免费人成电影在线观看四季| 韩日av一区二区| 精品亚洲成av人在线观看| 在线看日本不卡| 国产日产欧美精品一区二区三区| 一区二区三区中文字幕| 国产福利不卡视频| 欧美变态口味重另类| 亚洲一区二区三区国产| 成人性生交大片| 久久亚洲免费视频| 麻豆成人久久精品二区三区小说| 91蜜桃视频在线| 国产性做久久久久久| 老司机精品视频一区二区三区| 91精品福利在线| 自拍偷拍欧美精品| 国产成人综合在线播放| 精品国产a毛片| 日本不卡中文字幕| 欧美日韩视频在线第一区| 亚洲精品国产第一综合99久久| 成人丝袜高跟foot| 久久久国产精品午夜一区ai换脸| 久久成人麻豆午夜电影| 欧美一级黄色片| 免费观看91视频大全| 日韩午夜精品视频| 日韩福利电影在线观看|