搜索
bottom↓
回复: 1

我写的小程序,不知道对错噻!

[复制链接]

出0入0汤圆

发表于 2010-12-14 10:56:16 | 显示全部楼层 |阅读模式
/*=================================
ARM_CPLD_sram 控制单个sram读写数据
刷屏的verilog 程序
=================================*/
/*--------------------------------
输入端口:ARM_to_CPLD( ADDR17,ADDR18,
ADDR0-ADDR16-->地址线,data0-data7
-->数据线,)
输出端口:CPLD_to_sram( data0-data6
addr0-addr16,ce,oe,we,rclk,sclk,sclr_n
si,en)
---------------------------------*/
module arm_cpld_sram( CPLD_clk,cpld_rest,
                      ARM_addr,ARM_data,ADDR17,ADDR18,
                      CPLD_data,CPLD_addr,CPLD_oe,CPLD_ce,CPLD_we,
                      CPLD_rclk,CPLD_sclk,CPLD_sclr_n,CPLD_si,CPLD_en,CPLD_lx
                    );
input  CPLD_clk;         //------CPLD时钟信号--来自板载时钟源
input  cpld_rest;        //------复位信号---来自外部(ARM或按键)
input  ADDR17;           //------控制引脚--来自ARM
input  ADDR18;           //-------控制引脚--来自ARM
input  [16:0] ARM_addr;  //-------通讯地址线--来自ARM
input  [7: 0] ARM_data;  //-------通讯数据线--来自ARM
output CPLD_oe;          //-------SRAM控制信号低为读--来自CPLD
output CPLD_ce;          //-------SRAM控制信号读写时都为低--来自CPLD
output CPLD_we;          //-------SRAM控制信号高为读,低为写--来自CPLD
inout  [16:0] CPLD_addr; //-------SRAM的数据线--来自CPLD_to_SRAM
inout  [7: 0] CPLD_data; //-------SRAM的数据线--来自CPLD_to_SRAM
output CPLD_rclk;        //-------595锁存时钟0----1时数据输出--来自CPLD
output CPLD_sclk;        //-------595移位时钟每个时钟上升沿数据移位一次--来自CPLD
output CPLD_sclr_n;      //-------595清零输入口,寄存器数据清零,低电平有效--来自CPLD
output CPLD_si;          //-------595串行数据输入口--来自CPLD
output CPLD_en;          //-------595输出有效,低电平--来自CPLD
output [3:0] CPLD_lx;    //-------138------------------来自CPLD
reg    CPLD_rclk;
reg    CPLD_sclr_n;
reg    CPLD_si  ;
reg    CPLD_we;
reg    [7 :0] CPLD_data;
reg    [16:0] CPLD_addr;
/*===================================
对595的en脚置低电平
  =================================*/
assign CPLD_en=1'b0;
//assign CPLD_sclr_n=1'b1;
/*===================================
CPLD对ls138的控制,用来产生4-16的译码电路
控制
时钟---->sclk
输入:     4位控制电路
输出:     16位译码电路
计数器:counter1
方法:通过计数器来产生
功能:对16行进行不停的扫描
  ==================================*/
reg [3:0] CPLD_lx;
assign CPLD_sclk=CPLD_clk;
always@(posedge CPLD_sclk or negedge cpld_rest)
       begin
       if(!cpld_rest)
       CPLD_lx<=1'b0;
       else if(CPLD_lx==15)
       CPLD_lx<=1'b0;
       else CPLD_lx<=CPLD_lx+1'b1;
       end
/*=======================================
CPLD对hc595的控制:串行输入,并行输出八位数据
时钟: CPLD_sclk
输入: CPLD_rclk,CPLD_sclk,CPLD_sclr_n,CPLD_si,CPLD_en
输出: Q0-Q7;
功能:对led屏的列控制显示数据
=======================================*/
reg [2:0] i;
reg [7:0] display_data;//CPLD给si口送的数据

always@(posedge CPLD_sclk or negedge cpld_rest)
       begin
       if(!cpld_rest)
       CPLD_sclr_n<=1'b0;
       else if(i<8)
       begin
       i<=i+1'b1;
       CPLD_si<=display_data[0];
       display_data<=(display_data<<1'b1);
       CPLD_rclk<=1'b0;
       end
       if(i==8)
       CPLD_rclk<=1'b1;
       end
/*========================================
CPLD对SRAM的控制:从ARM读取数据写入sram中并从sram中读取数据
送给display_data.
时钟:CPLD_clk.
输入:ARM_data,ARM_addr,ADDR17,ADDR18,cpld_rest.
输出:CPLD_ce,CPLD_oe,CPLD_we.
双向口:CPLD_data,CPLD_addr.
功能 :数据的储存读取
 ======================================*/
reg [31:0] count;
assign CPLD_oe=1'b0;
assign CPLD_ce=1'b0;

always@(posedge CPLD_clk or negedge cpld_rest)
       if(!cpld_rest)
       count<=32'b0;
       else if(count[11:9]==3'b111)
       count<=32'b0;
       else
       count<=count+1'b1;
always@(count)
    case(count[13:12])
       00: begin
           CPLD_data<=ARM_data;
           CPLD_addr<=ARM_addr;
           end
       01: begin
           CPLD_we<=1'b0;
           CPLD_addr<=CPLD_addr+1'b1;
           end
       10: begin
           display_data<=CPLD_data;
           end
       11: begin
           CPLD_we<=1'b1;
           CPLD_addr<=CPLD_addr+1'b1;
           end
endcase
endmodule

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

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

出0入0汤圆

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

本版积分规则

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

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

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

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