lg88 发表于 2012-8-17 22:30:13

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

新手:用CPLD 模拟一个74HC595接收信号,然后将接收的信号在输出,,,现在得到的输出一直为0,,,不知道什么原因,,代码如下:
//////////////////////////////////////////////////////////////////////////////////
module hc595(
    CLK,
    LD_IN,
    SDI,
    SDO
    );

input CLK,LD_IN,SDI;
output    SDO;
reg   SDO;
regdata,data_out,y;

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

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

endmodule


用MODELSIM仿真的波形如下:

JayGong 发表于 2012-8-18 08:40:36

我帮你改了一下,你试试看行不行


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

input CLK,LD_IN,SDI;
outputSDO;
reg   SDO;
regdata;

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

endmodule

huatong 发表于 2012-8-18 08:47:31

回楼主,你考虑一下阻塞赋值与非阻塞赋值的区别.

lg88 发表于 2012-8-18 12:02:24

我晚上试试看,,我是第一次搞这个,不熟悉。

lg88 发表于 2012-8-20 12:30:34

JayGong 发表于 2012-8-18 08:40 static/image/common/back.gif
我帮你改了一下,你试试看行不行




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

JayGong 发表于 2012-8-21 23:08:40

我测试的波形图是这样的

lg88 发表于 2012-8-22 08:11:28

JayGong 发表于 2012-8-21 23:08 static/image/common/back.gif
我测试的波形图是这样的

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

womenhome 发表于 2012-8-22 09:08:38

这个,也学习下。

JayGong 发表于 2012-8-22 11:26:49

楼主的应用我没明白,既然是模拟HC595的功能,怎么会没有并行输出?

lg88 发表于 2012-8-22 11:51:43

JayGong 发表于 2012-8-22 11:26 static/image/common/back.gif
楼主的应用我没明白,既然是模拟HC595的功能,怎么会没有并行输出?

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

lg88 发表于 2012-8-22 12:34:46

最新消息:现在已经仿真正确了,是我的波形增加的时候弄错了,现在波形如下:
d:\111.jpg

lg88 发表于 2012-8-22 12:35:40

最新消息:现在已经仿真正确了,是我的波形增加的时候弄错了,现在波形如下:
页: [1]
查看完整版本: 新手:用CPLD 模拟一个74HC595接收信号,然后将接收的信号...