📄 sdramctrl_rtl.v
字号:
/*********************************************************
MODULE: Top Level SDRAM Controller ASIC Design Block
FILE NAME: sdramctrl_rtl.v
VERSION: 1.0
DATE: April 8nd, 2002
AUTHOR: Hossein Amidi
COMPANY:
CODE TYPE: Register Transfer Level
DESCRIPTION: This module is the top level RTL code of SDRAM Controller ASIC verilog
code. It will instantiate the following blocks in the ASIC:
1) Command Interface
2) Finite State Machine
3) Data Port
Hossein Amidi
(C) April 2002
*********************************************************/
// DEFINES
`timescale 1ns / 10ps
// TOP MODULE
module sdram_ctrl(
// Inputs
clk0,
clk0_2x,
reset,
paddr,
cmd,
dm,
datain,
// Outputs
cmdack,
addr,
cs,
ras,
cas,
we,
dqm,
cke,
ba,
dataout,
// Inouts
dq
);
// Parameter
`include "parameter.v"
// Inputs
input clk0;
input clk0_2x;
input reset;
input [padd_size - 1 : 0]paddr;
input [cmd_size - 1 : 0]cmd;
input [dqm_size - 1 : 0]dm;
input [data_size - 1 : 0]datain;
// Outputs
output cmdack;
output [add_size - 1 : 0]addr;
output [cs_size - 1 : 0]cs;
output ras;
output cas;
output we;
output [dqm_size - 1 : 0]dqm;
output cke;
output [ba_size - 1 : 0]ba;
output [data_size - 1 : 0]dataout;
// Inouts
inout [data_size - 1 : 0]dq;
// Signal Declarations
wire clk0;
wire clk0_2x;
wire reset;
wire [padd_size - 1 : 0]paddr;
wire [padd_size - 1 : 0]wpaddr;
wire [cmd_size - 1 : 0]cmd;
wire [dqm_size - 1 : 0]dm;
wire cmack;
wire cmdack;
wire [add_size - 1 : 0]addr;
wire [cs_size - 1 : 0]cs;
wire ras;
wire cas;
wire we;
wire cke;
wire [ba_size - 1 : 0]ba;
wire nop;
wire reada;
wire writea;
wire refresh;
wire preacharge;
wire load_mod;
wire oe;
wire [cas_size - 1 : 0]cas_lat;
wire [rc_size - 1 : 0]ras_cas;
wire [ref_dur_size - 1 : 0]ref_dur;
wire page_mod;
wire [burst_size - 1 : 0]bur_len;
wire ref_ack;
wire ref_req;
wire resetn;
wire [add_size - 1 : 0]wsadd;
wire [ba_size - 1 : 0]wba;
wire [cs_size - 1 : 0]wcs;
wire wcke;
wire wras;
wire wcas;
wire wwe;
// Assignment statments
/*----------------------------Sub Level Module Instantiation------------------------*/
command_if cmdif_0(// Input
.reset(reset),
.clk0(clk0),
.paddr(paddr),
.cmd(cmd),
.cmack(cmack),
.ref_ack(ref_ack),
// Output
.cmdack(cmdack),
.caddr(wpaddr),
.nop(nop),
.reada(reada),
.writea(writea),
.refresh(refresh),
.preacharge(preacharge),
.load_mod(load_mod),
.cas_lat(cas_lat),
.ras_cas(ras_cas),
.ref_dur(ref_dur),
.page_mod(page_mod),
.bur_len(bur_len),
.ref_req(ref_req)
);
fsm fsm_0(// Input
.reset(reset),
.clk0(clk0),
.nop(nop),
.reada(reada),
.writea(writea),
.refresh(refresh),
.preacharge(preacharge),
.load_mod(load_mod),
.caddr(wpaddr),
.cas_lat(cas_lat),
.ras_cas(ras_cas),
.ref_dur(ref_dur),
.page_mod(page_mod),
.bur_len(bur_len),
.ref_req(ref_req),
// Output
.sadd(wsadd),
.cs(wcs),
.ras(wras),
.cas(wcas),
.we(wwe),
.cke(wcke),
.ba(wba),
.oe(oe),
.ref_ack(ref_ack),
.cmack(cmack)
);
data_port data_0( // Input
.reset(reset),
.clk0(clk0),
.clk0_2x(clk0_2x),
.dm(dm),
.oe(oe),
.datain(datain),
.wsadd(wsadd),
.wba(wba),
.wcs(wcs),
.wcke(wcke),
.wras(wras),
.wcas(wcas),
.wwe(wwe),
// Output
.dqm(dqm),
.dataout(dataout),
.add(addr),
.ba(ba),
.cs(cs),
.cke(cke),
.ras(ras),
.cas(cas),
.we(we),
// Inout
.dq(dq)
);
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -