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

📄 dcr_if.v

📁 TFT LCD 控制器的VERILOG 源代码程序,已在某项目上成功应用.
💻 V
字号:
//----------------------------------------------------------------------------// DCR_IF Controller - DCR Bus Interface//-----------------------------------------------------------------------------////     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"//     SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR//     XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION//     AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION//     OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS//     IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,//     AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE//     FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY//     WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE//     IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR//     REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF//     INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS//     FOR A PARTICULAR PURPOSE.//     //     (c) Copyright 2004 Xilinx, Inc.//     All rights reserved.// //----------------------------------------------------------------------------// Filename:     dcr_if.v// // Description:    ////// Design Notes://   //-----------------------------------------------------------------------------// Structure:   // //              -- dcr_if.v////-----------------------------------------------------------------------------// Author:    CJN// History://            CJN//-----------------------------------------------------------------------------`timescale 1 ns / 100 ps///////////////////////////////////////////////////////////////////////////////// Module Declaration///////////////////////////////////////////////////////////////////////////////module dcr_if(  // DCR BUS  clk,           // I  rst,           // I  DCR_ABus,      // I [0:9]  DCR_DBusIn,    // I [0:31]  DCR_Read,      // I  DCR_Write,     // I  DCR_Ack,       // O  DCR_DBusOut,   // O [0:31]  // Registers  tft_base_addr, // O [0:10]      tft_dps_reg,   // O  tft_on_reg     // O  );///////////////////////////////////////////////////////////////////////////////// Port Declarations///////////////////////////////////////////////////////////////////////////////   input         clk;  input         rst;  input  [0:9]  DCR_ABus;  input  [0:31] DCR_DBusIn;  input         DCR_Read;  input         DCR_Write;  output        DCR_Ack;  output [0:31] DCR_DBusOut;  output [0:10] tft_base_addr;  output        tft_dps_reg;  output        tft_on_reg;  wire   [0:31] DCR_DBusOut;  reg           DCR_Ack;///////////////////////////////////////////////////////////////////////////////// Parameter Declarations///////////////////////////////////////////////////////////////////////////////  parameter C_DCR_BASE_ADDR = 10'b00_0000_0000;  parameter C_DEFAULT_TFT_BASE_ADDR = 11'b000_0000_0000;  parameter C_DPS_INIT = 1'b1;  parameter C_ON_INIT = 1'b1;///////////////////////////////////////////////////////////////////////////////// Signal Declaration///////////////////////////////////////////////////////////////////////////////  wire        dcr_addr_hit;  wire [0:9]  dcr_base_addr;  reg         dcr_read_access;  reg  [0:31] read_data;  reg  [0:10] tft_base_addr;  reg         tft_dps_reg;  reg         tft_on_reg;///////////////////////////////////////////////////////////////////////////////// DCR Register Interface ///////////////////////////////////////////////////////////////////////////////  assign dcr_base_addr = C_DCR_BASE_ADDR;  assign dcr_addr_hit  = (DCR_ABus[0:8] == dcr_base_addr[0:8]);  always @(posedge clk)  begin    dcr_read_access <=  DCR_Read              & dcr_addr_hit;    DCR_Ack         <= (DCR_Read | DCR_Write) & dcr_addr_hit;  end  always @(posedge clk)    if (rst)      tft_base_addr <= C_DEFAULT_TFT_BASE_ADDR;     else if (DCR_Write & ~DCR_Ack & dcr_addr_hit & (DCR_ABus[9] == 1'b0))      tft_base_addr <= DCR_DBusIn[0:10];  always @(posedge clk)    if (rst) begin      tft_dps_reg <= C_DPS_INIT;      tft_on_reg  <= C_ON_INIT;    end    else if (DCR_Write & ~DCR_Ack & dcr_addr_hit & (DCR_ABus[9] == 1'b1)) begin      tft_dps_reg <= DCR_DBusIn[30];      tft_on_reg  <= DCR_DBusIn[31];    end  always @(posedge clk)    if (DCR_Read & dcr_addr_hit & ~DCR_Ack)      read_data <= (DCR_ABus[9] == 1'b0)? {tft_base_addr, 21'b0} :                                          {30'b0, tft_dps_reg, tft_on_reg};  assign DCR_DBusOut = (dcr_read_access)? read_data : DCR_DBusIn;endmodule

⌨️ 快捷键说明

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