搜索
bottom↓
回复: 11

新手:用CPLD 模拟一个74HC595接收信号,然后将接收的信号...

[复制链接]

出0入0汤圆

发表于 2012-8-17 22:30:13 | 显示全部楼层 |阅读模式
新手:用CPLD 模拟一个74HC595接收信号,然后将接收的信号在输出  ,,,现在得到的输出一直为0,,,不知道什么原因,,代码如下:
//////////////////////////////////////////////////////////////////////////////////
module hc595(
    CLK,
    LD_IN,
    SDI,
    SDO
    );

input CLK,LD_IN,SDI;
output    SDO;
reg   SDO;
reg[15:0]data,data_out,y;

always@(posedge LD_IN)//在锁存信号上升沿进行同步
begin
        SDO <= data[15];//根据数据确定第一个时钟的时候输出地数据为1或者0
        data <=16'b0;        //将接收数据清零
end

always@(posedge CLK)//上升沿触发  接收数据
begin
        if(SDI)
                data[0]<=1'b1;   //根据输入的数据移位处理
        else data[0]<=1'b0;
          data <=(data << 1);   //data为接收的数据
          
          //移位发送
        data_out <=(data_out << 1);        //左移       
   if(data_out[15])
                SDO <=1;      //根据数据确定下个时钟输出1或者0
        else
                SDO <= 0;
end               

endmodule


用MODELSIM  仿真的波形如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

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

出0入0汤圆

发表于 2012-8-18 08:40:36 | 显示全部楼层
我帮你改了一下,你试试看行不行


module hc595( CLK, LD_IN, SDI, SDO);

input CLK,LD_IN,SDI;
output  SDO;
reg   SDO;
reg[14:0]data;

always@(posedge CLK or posedge LD_IN)   
begin
  if(LD_IN)
   begin
    SDO <= data[14];     
    data <= 15'b0;        
   end
  else
  {SDO,data[14:0]} <= {data[14:0],SDI};
end               

endmodule

出0入0汤圆

发表于 2012-8-18 08:47:31 | 显示全部楼层
回楼主,你考虑一下阻塞赋值与非阻塞赋值的区别.

出0入0汤圆

 楼主| 发表于 2012-8-18 12:02:24 | 显示全部楼层
我晚上试试看,,我是第一次搞这个,不熟悉。

出0入0汤圆

 楼主| 发表于 2012-8-20 12:30:34 | 显示全部楼层
JayGong 发表于 2012-8-18 08:40
我帮你改了一下,你试试看行不行

朋友你好,你这个程序我测试过输出SDO还是为0 ,不知道是怎么回事,是不是我的方针方式不对?测试波形如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-8-21 23:08:40 | 显示全部楼层
我测试的波形图是这样的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-8-22 08:11:28 | 显示全部楼层
JayGong 发表于 2012-8-21 23:08
我测试的波形图是这样的

我是在MODELSIM测试的,,不知道是不是哪里设置不对。等下再quartus试试,,

出0入0汤圆

发表于 2012-8-22 09:08:38 | 显示全部楼层
这个,也学习下。

出0入0汤圆

发表于 2012-8-22 11:26:49 来自手机 | 显示全部楼层
楼主的应用我没明白,既然是模拟HC595的功能,怎么会没有并行输出?

出0入0汤圆

 楼主| 发表于 2012-8-22 11:51:43 | 显示全部楼层
JayGong 发表于 2012-8-22 11:26
楼主的应用我没明白,既然是模拟HC595的功能,怎么会没有并行输出?

是这样的,我这个CPLD和外部单片机通讯。以前是单片机直接驱动外部2片595,595在驱动显示数码管,数码管显示的时间。我现在是要改成把显示时间变成以前的一半,所以先要解码,在显示。由于单片机程序不是我的,我没办法在原来的程序上修改。
      本来开始用单片机来做接收解码,但是他那个输出频率有点高,一般的单片机实现不了,所以采用CPLD来做。

出0入0汤圆

 楼主| 发表于 2012-8-22 12:34:46 | 显示全部楼层
最新消息:现在已经仿真正确了,是我的波形增加的时候弄错了,现在波形如下:
d:\111.jpg

出0入0汤圆

 楼主| 发表于 2012-8-22 12:35:40 | 显示全部楼层
最新消息:现在已经仿真正确了,是我的波形增加的时候弄错了,现在波形如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

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

GMT+8, 2024-7-24 09:26

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

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