搜索
bottom↓
回复: 11

代码综合之后没有消耗任何的逻辑单元,只报警,无错误,问什么呢?求助

[复制链接]

出0入0汤圆

发表于 2011-10-11 20:26:13 | 显示全部楼层 |阅读模式
module MENC_Div(
                                        in1_A,in1_B,
                                        rst_n,                       
                                        out_A,out_B
                                );
input in1_A;
input in1_B;
input rst_n;
output out_A;
output out_B;

reg [1:0] oldAB;
reg [1:0] status;
reg [3:0] cnt;
reg out_A_reg,out_B_reg;

//用于对in1_A、in1_B下降沿敏感
wire in2_A=~in1_A;
wire in2_B=~in1_B;
wire [1:0] AB={in1_A,in1_B};

//输入A、B辩向,生成状态数据status
always @ (        posedge in1_A or posedge in2_A or
                        posedge in1_B or posedge in2_B or
                        negedge rst_n)
begin
        if(!rst_n)
                begin
                        //AB=2'b00;
                        oldAB=AB;
                        status=2'b00;
                end
        else
                begin                                                                                //编码器增量信号解码
                        //AB={in1_A,in1_B};       
                        case (AB)
                                2'b00 :
                                                case (oldAB)
                                                        2'b01 : status=2'b01;          //2'b01-正转
                                                        2'b10 : status=2'b10;          //2'b10-反转
                                                        default :status=2'b11;        //2'b00、2'b11-错误信号
                                                endcase
                                2'b01 :
                                                case (oldAB)
                                                        2'b00 : status=2'b10;          //反转
                                                        2'b11 : status=2'b01;          //正转
                                                        default :status=2'b11;
                                                endcase
                                2'b10 :
                                                case (oldAB)
                                                        2'b00 : status=2'b01;          //正转
                                                        2'b11 : status=2'b10;        //反转
                                                        default :status=2'b11;
                                                endcase               
                                2'b11 :
                                                case (oldAB)
                                                        2'b01 : status=2'b10;          //反转
                                                        2'b10 : status=2'b01;        //正转
                                                        default :status=2'b11;
                                                endcase
                                //default :;
                        endcase       
                        oldAB<=AB;//不能用阻塞               
                end
end

//循环的对A、B的沿计数,1-15,生成counter
always @ (        posedge in1_A or //posedge in2_A or
                        //posedge in1_B or //posedge in2_B or
                        negedge rst_n
                        )//两个敏感时可以编译、综合,但也不对
                        //三个敏感时,报错
begin
        if(!rst_n)
                cnt<=1'b1;
        else
                if(status==2'b01)                                         //2'b01-正转
                        if(cnt==4'd15)cnt<=1'b1;
                        else cnt<=cnt+1'b1;
                else
                        if(status==2'b10)                                //2'b10-反转
                                if(cnt==4'd15)cnt<=4'd15;
                                else cnt<=cnt-1'b1;
                        else cnt<=1'b1;                                        //2'b00、2'b11-错误信号
end

assign out_A=out_A_reg;
assign out_B=out_B_reg;
/*
always @ (negedge rst_n)                       
begin
        if(!rst_n)
        begin
                                out_A_reg=in2_A;//{out_A_reg,out_B_reg}=2'b00;
                                out_B_reg=in2_B;
        end
end*/


//生成输出A1、B1        组合逻辑
always @ (        cnt or rst_n)                       
begin
        if(!rst_n)
                begin
                        out_A_reg<=1'b0;//{out_A_reg,out_B_reg}=2'b00;
                        out_B_reg<=1'b0;
                end
        else
                if(cnt<=4'd4)
                        begin
                                out_A_reg<=1'b0;                                //{out_A_reg,out_B_reg}=2'b00;        //任意构建一个正交周期波形
                                out_B_reg<=1'b0;
                        end
                else
                        if(cnt<=4'd7)                                  //{out_A_reg,out_B_reg}=2'b10;
                                begin
                                        out_A_reg<=1'b1;
                                        out_B_reg<=1'b0;
                                end       
                        else
                                if(cnt<=4'd11)                         //{out_A_reg,out_B_reg}=2'b11;
                                        begin
                                                out_A_reg<=1'b1;
                                                out_B_reg<=1'b1;
                                        end
                                else
                                        if(cnt<=4'd15)                //{out_A_reg,out_B_reg}=2'b01;
                                                begin
                                                        out_A_reg<=1'b0;
                                                        out_B_reg<=1'b1;
                                                end       
                                        else
                                                begin
                                                        out_A_reg<=1'bx;        //不关心,该情况不可能出现
                                                        out_B_reg<=1'bx;
                                                end                                                       
end

endmodule


报警如下:
Warning: Output pins are stuck at VCC or GND
        Warning (13410): Pin "out_A" is stuck at GND
        Warning (13410): Pin "out_B" is stuck at GND
Warning: Design contains 3 input pin(s) that do not drive logic
        Warning (15610): No output dependent on input pin "rst_n"
        Warning (15610): No output dependent on input pin "in1_A"
        Warning (15610): No output dependent on input pin "in1_B"
Warning: Following 2 pins have nothing, GND, or VCC driving datain port -- changes to this connectivity may change fitting results
        Info: Pin out_A has GND driving its datain port
        Info: Pin out_B has GND driving its datain port
Warning: No paths found for timing analysis

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

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

出0入0汤圆

发表于 2011-10-11 23:43:26 | 显示全部楼层
我试试。。。。。。。

出0入0汤圆

发表于 2011-10-11 23:56:48 | 显示全部楼层
将你的

begin //编码器增量信号解码
//AB={in1_A,in1_B};
case (AB)
2'b00 :
case (oldAB)  

第三行的AB改成status

出0入0汤圆

发表于 2011-10-12 09:48:10 | 显示全部楼层
你写的逻辑有问题,全被优化掉了。另外,语言是语言,能不能综合是另一码事,记住fpga里面都是d触发器,不是你说上升沿触发就可以的,没有时钟,编译器按照锁存器的方式综合。

出0入0汤圆

 楼主| 发表于 2011-10-12 12:17:38 | 显示全部楼层
怎么自己发的帖,自己都不能访问了,公司的ip地址!

之前在网上找过,是被优化掉了!那我怎么才能让他按我设计的综合呢?
设计思路:对编码器的A、B的沿计数和辨向,根据计数值和方向输出另外两路AB信号

出0入0汤圆

 楼主| 发表于 2011-10-12 12:17:58 | 显示全部楼层
怎么自己发的帖,自己都不能访问了,公司的ip地址!

之前在网上找过,是被优化掉了!那我怎么才能让他按我设计的综合呢?
设计思路:对编码器的A、B的沿计数和辨向,根据计数值和方向输出另外两路AB信号

出0入0汤圆

 楼主| 发表于 2011-10-12 12:33:49 | 显示全部楼层
他现在提示的是输入与输出不相关,可逻辑里面是有关联的啊,只是经过了中间reg

出0入0汤圆

发表于 2011-10-13 11:23:46 | 显示全部楼层
1,比较方便的方法,用几个非门做个时钟,用这个时钟做对输入信号进行采样判断。
2,不使用触发器的方法写,使用门逻辑,从网上找找有没有类似的逻辑门电路设计的,用语言表述出来就行

出0入0汤圆

 楼主| 发表于 2011-10-15 00:38:44 | 显示全部楼层
嗯,谢谢xcreat耐心的回复!我现在采用一个高速采样时钟,现在把代码改进了,都作为时序电路。现在用写的testbech做仿真,但信号没出来,正在一步一步找原因!
问个很弱的问题,如果这步功能仿真过去了的话,最终在实际硬件中会出现什么问题吗?呵

出0入0汤圆

发表于 2011-10-15 16:42:09 | 显示全部楼层
注意实际输入的信号有没有毛刺

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 11:16

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

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