打印

CPLD寄存器值无故变化!!工程实际问题求救!!

[复制链接]
1319|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luyaker|  楼主 | 2013-6-27 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我只有对site1bin,site2bin,site3bin,site4bin赋值的操作,如下,但是它的输出居然有其他值(例如site3bin值为6‘b010111)
硬件应该没有问题,因为我们用原理图替代verilog的方式一直没有出现问题!
求救!!
源代码:
always @(posedge MCLK or posedge rst )
        if(rst)
        begin
                site1bin_buf<=6'h3f;
                site2bin_buf<=6'h3f;
                site3bin_buf<=6'h3f;
                site4bin_buf<=6'h3f;
        end
        else if(!DB50_START)
        begin
                site1bin_buf<=6'h3f;
                site2bin_buf<=6'h3f;
                site3bin_buf<=6'h3f;
                site4bin_buf<=6'h3f;
        end
        else
                begin
                        case(CPLD_IN)
                        12'b1110_1101_1111:        site1bin_buf<=6'b01_1111;
                        12'b1110_1110_1111:        site1bin_buf<=6'b10_1111;
                        12'b1110_1111_0111:        site1bin_buf<=6'b11_0111;       
                        12'b1110_1111_1011:        site1bin_buf<=6'b11_1011;
                        12'b1110_1111_1101:        site1bin_buf<=6'b11_1101;
                        12'b1110_1111_1110:        site1bin_buf<=6'b11_1110;
                       
                        12'b1101_1101_1111:        site2bin_buf<=6'b01_1111;
                        12'b1101_1110_1111:        site2bin_buf<=6'b10_1111;
                        12'b1101_1111_0111:        site2bin_buf<=6'b11_0111;       
                        12'b1101_1111_1011:        site2bin_buf<=6'b11_1011;
                        12'b1101_1111_1101:        site2bin_buf<=6'b11_1101;
                        12'b1101_1111_1110:        site2bin_buf<=6'b11_1110;
                       
                        12'b1011_1101_1111:        site3bin_buf<=6'b01_1111;
                        12'b1011_1110_1111:        site3bin_buf<=6'b10_1111;
                        12'b1011_1111_0111:        site3bin_buf<=6'b11_0111;       
                        12'b1011_1111_1011:        site3bin_buf<=6'b11_1011;
                        12'b1011_1111_1101:        site3bin_buf<=6'b11_1101;
                        12'b1011_1111_1110:        site3bin_buf<=6'b11_1110;
                       
                        12'b0111_1101_1111:        site4bin_buf<=6'b01_1111;
                        12'b0111_1110_1111:        site4bin_buf<=6'b10_1111;
                        12'b0111_1111_0111:        site4bin_buf<=6'b11_0111;       
                        12'b0111_1111_1011:        site4bin_buf<=6'b11_1011;
                        12'b0111_1111_1101:        site4bin_buf<=6'b11_1101;
                        12'b0111_1111_1110:        site4bin_buf<=6'b11_1110;
                       
                        default:;
                        endcase
                end
               

                               
                       

always @(posedge MCLK or posedge rst )
        if(rst)
                begin
                        {site1bin,site2bin,site3bin,site4bin}<=24'hff_ffff;
                        DB50_EOT_en<=1'b1;
                end
        else if(!DB50_START)
                begin
                        {site1bin,site2bin,site3bin,site4bin}<=24'hff_ffff;
                        DB50_EOT_en<=1'b1;                       
                end
        else if(DB25_EOT_buf==16'h7fff)
                begin
                        site1bin<=site1bin_buf;
                        site2bin<=site2bin_buf;
                        site3bin<=site3bin_buf;
                        site4bin<=site4bin_buf;
                        DB50_EOT_en<=1'b0;
                end

相关帖子

沙发
luyaker|  楼主 | 2013-6-27 14:01 | 只看该作者
本帖最后由 luyaker 于 2013-6-27 14:04 编辑

本人已经找到一些现象和原因了。
我把下面的语句去掉了
  {site1bin,site2bin,site3bin,site4bin}<=24'hff_ffff;
  {site1bin,site2bin,site3bin,site4bin}<=24'hff_ffff;

                        site1bin<=site1bin_buf;
                        site2bin<=site2bin_buf;
                        site3bin<=site3bin_buf;
                        site4bin<=site4bin_buf;
然后把site1bin_buf,site2bin_buf,site3bin_buf,site4bin_buf换成site1bin,site2bin,site3bin,site4bin直接输出,就没有问题了。请教各位老师,这个可能是什么原因呢??
用的芯片是EPM570T100C5的CPLD

使用特权

评论回复
板凳
liusensen| | 2013-6-27 14:43 | 只看该作者
EPM570T100C5   很熟悉啊 !

使用特权

评论回复
地板
luyaker|  楼主 | 2013-6-27 16:22 | 只看该作者
liusensen 发表于 2013-6-27 14:43
EPM570T100C5   很熟悉啊 !

那您老有没有遇见这种问题啊,愁死我了,稍微复杂点的逻辑就出错。(仿真各种没问题)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

104

帖子

0

粉丝