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

2020-02-28 18:38发布

我只有对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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
luyaker
1楼-- · 2020-02-28 19:55
本帖最后由 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
2楼-- · 2020-02-29 00:49
 精彩回答 2  元偷偷看……
luyaker
3楼-- · 2020-02-29 04:43
liusensen 发表于 2013-6-27 14:43
EPM570T100C5   很熟悉啊 !

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

一周热门 更多>