搜索
bottom↓
回复: 7

自己写的一个读写SRAM程序,请各位大侠指点~~

[复制链接]

出0入0汤圆

发表于 2008-7-29 13:28:34 | 显示全部楼层 |阅读模式
自己写的一个连续读写SRAM的程序,还没用芯片试验过,各位帮忙看看~~哈哈~~
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date:    11:26:03 07/28/2008
// Design Name:
// Module Name:    SRAM
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module SRAM(ce,oe,we,lb,ub,io,a,clk);
input clk;                         //系统时钟
output ce,oe,we,lb,ub;            //读写使能信号
output [17:0]a;                   //地址端口
inout [15:0]io;                   //读写端口

//定义端口变量
wire clk;
wire [15:0]io;
wire [17:0]a;
reg ce,oe,we,lb,ub;

//定义寄存器变量
reg data_in_en;             //写使能信号,等于1时写数据到RAM中
reg [15:0]data_in_reg;       //从RAM读数据进来时的寄存器
reg [15:0]data_out_reg;      //CPLD写数据到RAM中的寄存器
reg a_in_en;                 //地址写入使能,当CPLD写数据到RAM时为1
reg [17:0]a_in_reg;          //写数据时的地址
reg [17:0]a_out_reg;         //读数据时的地址
reg [3:0]state;              //状态机状态

assign io=data_in_en?data_out_reg:16'hzzzz;   //读数据时输出高阻态再读,输出直接输出到RAM
assign a=a_in_en?a_in_reg:a_out_reg;         //读写地址输出

//状态变量赋值
parameter  
idel=0,
start=1,
w1=2,
w2=3,
w3=4,
r1=5,
r2=6,
r3=7;

//初始化
initial
begin
state=0;
a_in_reg=0;
a_out_reg=0;
data_in_reg=0;
data_out_reg=0;
end

//状态机控制RAM的读写
always@(posedge clk)
begin
case(state)
idel:
        begin
        ce<=0; //
        we<=1; //
        oe<=1; ///////////初始状态,RAM输出高阻   
        lb<=0; //
        ub<=0; //   
        data_in_en<=1;    //写入使能CPLD发送数据到RAM
        a_in_en<=1;       //地址选择写入地址
       
        state<=start;
        end
       
start:
        begin
        if(data_in_en)
        state<=w1;
        else
        state<=r1;
        end
       
w1:                //开始写数据到RAM
        begin
        a_in_en<=1;     //写入地址使能,送写入地址信号到RAM,初始地址为18'b00_0000_0000_0000_0000
        ce<=0; //
        oe<=1; //
        we<=0; ///////////设置RAM写入使能
        lb<=0; //
        ub<=0; //
        state<=w2;
        end
       
w2:
        begin
        data_out_reg<=16'h1234;    //往写入寄存器赋值,写入数据发送到IO
        state<=w3;
        end
       
w3:
        begin
        a_in_reg<=a_in_reg+1;     //选择下一个地址继续
        ce<=0; //
        oe<=1; //
        we<=1; ////////////写入结束,RAM恢复输出高阻
        lb<=0; //
        ub<=0; //
        state<=start;            //回到开始状态判断进入读还是写
        end
       
r1:
        begin
        a_in_en<=0;              //读出地址使能,送读出地址到RAM
        ce<=0; //
        oe<=0; //
        we<=1; /////////////设置RAM读出使能
        lb<=0; //
        ub<=0; //
        state<=w2;
        end
       
r2:
        begin
        data_in_reg<=io;        //读出IO数据存储到读出寄存器中
        state<=r3;
        end
       
r3:
        begin
        a_out_reg<=a_out_reg+1;  //读出下一个地址的数据
        ce<=0; //
        oe<=1; //
        we<=1; //////////////读出结束,RAM恢复输出高阻
        lb<=0; //
        ub<=0; //
        state<=start;       //回到开始状态判断进入读还是写
        end
       
default:
        state<=idel;
       
endcase
end

endmodule

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2008-7-29 20:34:42 | 显示全部楼层
看不懂Verilog~帮顶~

出0入0汤圆

发表于 2010-3-4 20:48:59 | 显示全部楼层
看看学习中

出0入0汤圆

发表于 2010-4-2 14:16:51 | 显示全部楼层
验证过没有呀

出0入0汤圆

发表于 2011-2-11 10:01:36 | 显示全部楼层
正需要,谢谢

出0入0汤圆

发表于 2011-2-11 10:07:25 | 显示全部楼层
initial。。。

出0入0汤圆

发表于 2011-2-12 15:51:08 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2011-5-11 20:51:36 | 显示全部楼层
验证过告知一下,我也在搞
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 15:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表