linbo411 发表于 2015-12-7 11:25:48

CPLD根据输入波形 产生一波形仿真正确,下载后不正常


        process(VFCLKDIV8,Wave1_XOR_Wave2)
        begin
                if VFCLKDIV8 'event and VFCLKDIV8 ='1' then-- 1.25M时钟上升沿
                        data <= data+1;
                        temp_pulse <= Wave1_XOR_Wave2;
                        iftemp_pulse /= Wave1_XOR_Wave2 and   Wave1_XOR_Wave2='0' then -- 判断输入信号下降沿
                                data1 <= data;
                                data <= 0;
                        end if;
                end if;
        end process;
-----------------------------------------------------------------------------------------------------------       
        process(VFCLKDIV8)
        begin
                if VFCLKDIV8 'event and VFCLKDIV8 ='1' then-- 时钟上升沿
                                if data1 > 31250 then--50ms
                                        first_flag<= '1';
                                else
                                        first_flag <= '0';
                                end if;
                end if;
        end process;
VFCLKDIV8是1.25M输入时钟,Wave1_XOR_Wave2是输入信号,判断输入信号两次下降沿时间间隔输出一波形,输入信号如上图中,下降沿间隔分别为21MS,59MS.我编程判断相邻下降沿时间大于50ms输出1,否则输出0.仿真都正确了,为什么实际下载不正常,一直输出0也就是说 data1没有大于31250first_flag一直为0然后我把3125050ms计数值 改21250 就正常输出波形。可是我输入波形两次下降沿最长的时间是59,50ms在范围内,为什么不能判断到 data1 > 31250?

mcupro 发表于 2015-12-7 11:31:04

是要实现图中的波形吗 ? 用状态机实现最合适.

linbo411 发表于 2015-12-7 11:32:37

mcupro 发表于 2015-12-7 11:31
是要实现图中的波形吗 ? 用状态机实现最合适.

图中波形是输入波形

NJ8888 发表于 2015-12-7 11:55:55

查1.25MHz对不对以及data1的宽度位数

NJ8888 发表于 2015-12-7 11:57:06

你代码功能看的不清晰

lusson 发表于 2015-12-7 12:00:45

这是verilog HDL吗?
怎么有个--50ms?

实际延时中,CPLD一般用状态机来做吧。

linbo411 发表于 2015-12-7 12:31:51

NJ8888 发表于 2015-12-7 11:55
查1.25MHz对不对以及data1的宽度位数

这个都对

NJ8888 发表于 2015-12-7 12:39:10

linbo411 发表于 2015-12-7 12:31
这个都对

调试状态机一般可以加IO观察,比如我用8位64组选择可以观察内部状态机动作路径,当然我是FPGA资源多,另外有总线模式的数字示波器可以看.不知道你有什么设备
页: [1]
查看完整版本: CPLD根据输入波形 产生一波形仿真正确,下载后不正常