📄 flash_ctrl.v
字号:
/********************************************************* MODULE: Sub Level UART Device FILE NAME: uart.v VERSION: 1.0 DATE: May 14th, 2002 AUTHOR: Hossein Amidi COMPANY: CODE TYPE: Register Transfer Level DESCRIPTION: This module is the top level RTL code of UART verilog code. It will instantiate the following blocks in the ASIC: Hossein Amidi (C) April 2002*********************************************************/// DEFINES`timescale 1ns / 10ps // TOP MODULEmodule flash_ctrl(// Inputs reset, clk0, flash_host_addr, flash_host_cmd, flash_host_dataout, flash_datain, // Outputs flash_host_datain, flash_cle, flash_ale, flash_ce, flash_re, flash_we, flash_wp, flash_rb, flash_irq, flash_dataout ); // Parameter`include "parameter.v"// Inputsinput reset;input clk0;input [padd_size - 1 : 0]flash_host_addr;input [cmd_size - 1 : 0]flash_host_cmd;input [data_size - 1 : 0]flash_host_dataout;input [flash_size - 1 : 0]flash_datain;// Outputsoutput [data_size - 1 : 0]flash_host_datain;output flash_cle;output flash_ale;output flash_ce;output flash_re;output flash_we;output flash_wp;output flash_rb;output flash_irq;output [flash_size - 1 : 0]flash_dataout;// Signal Declarationswire reset;wire clk0;wire [padd_size - 1 : 0]flash_host_addr;wire [cmd_size - 1 : 0]flash_host_cmd;wire [data_size - 1 : 0]flash_host_dataout;wire [flash_size - 1 : 0]flash_datain;wire [data_size - 1 : 0]flash_host_datain;reg flash_cle;reg flash_ale;reg flash_ce;reg flash_re;reg flash_we;reg flash_wp;reg flash_rb;reg flash_irq;reg [flash_size - 1 : 0]flash_dataout;// Internal Registersreg [Byte_size - 1 : 0]flash_reg_dataout;// Assignment statmentsassign flash_host_datain = flash_reg_dataout;/***************** Internal Register of Uart configuration *******************/reg [flash_reg_width - 1 : 0] flash_register [flash_reg_depth - 1 : 0];// Circuit for internal Registeralways @(posedge reset or posedge clk0)begin if(reset == 1'b1) begin flash_reg_dataout <= 8'h0; flash_register[0] <= 8'h0; flash_register[1] <= 8'h0; flash_register[2] <= 8'h0; flash_register[3] <= 8'h0; flash_register[4] <= 8'h0; flash_register[5] <= 8'h0; flash_register[6] <= 8'h0; flash_register[7] <= 8'h0; end else begin if(flash_host_cmd == 3'b010) begin case(flash_host_addr) 24'h080008: flash_register[0] <= flash_host_dataout; 24'h080009: flash_register[1] <= flash_host_dataout; 24'h08000A: flash_register[2] <= flash_host_dataout; 24'h08000B: flash_register[3] <= flash_host_dataout; 24'h08000C: flash_register[4] <= flash_host_dataout; 24'h08000D: flash_register[5] <= flash_host_dataout; 24'h08000E: flash_register[6] <= flash_host_dataout; 24'h08000F: flash_register[7] <= flash_host_dataout; endcase end else if(flash_host_cmd == 3'b001) begin case(flash_host_addr) 24'h080008: flash_reg_dataout <= flash_register[0]; 24'h080009: flash_reg_dataout <= flash_register[1]; 24'h08000A: flash_reg_dataout <= flash_register[2]; 24'h08000B: flash_reg_dataout <= flash_register[3]; 24'h08000C: flash_reg_dataout <= flash_register[4]; 24'h08000D: flash_reg_dataout <= flash_register[5]; 24'h08000E: flash_reg_dataout <= flash_register[6]; 24'h08000F: flash_reg_dataout <= flash_register[7]; endcase end endendalways @(posedge reset or posedge clk0)begin if(reset == 1'b1) begin flash_cle <= 1'b0; flash_ale <= 1'b0; flash_ce <= 1'b0; flash_re <= 1'b0; flash_we <= 1'b0; flash_wp <= 1'b0; flash_rb <= 1'b0; flash_irq <= 1'b0; flash_dataout <= 8'h0; end else begin flash_cle <= flash_host_addr[7]; flash_ale <= flash_host_addr[0] & flash_host_cmd[0]; flash_ce <= flash_host_addr[1] & flash_host_cmd[1]; flash_re <= flash_host_addr[2] & flash_host_cmd[2]; flash_we <= flash_host_addr[3]; flash_wp <= flash_host_addr[4]; flash_rb <= flash_host_addr[5]; flash_irq <= flash_host_addr[6]; flash_dataout <= flash_datain; endendendmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -