[讨论] 管脚编号时的问题

jas0n   2010-3-10 14:05 楼主
在布局布线那一步时
有时候会没有出现我需要的管脚,比如说我定义了
input clk;
out[7:0] seg;


但在管脚编号的时候,只出现seg【0】-seg【7】,没有了 clk 的这一项,
请问各位有没有遇到类似的问题啊,
应该如何解决??

源程序在6楼

[ 本帖最后由 jas0n 于 2010-3-10 16:45 编辑 ]

回复评论 (9)

补充一下,我用的是libero 8.5
点赞  2010-3-10 14:06

不太可能啊

你把你的工程文件贴出来我看看,我搞了一年多actel
点赞  2010-3-10 15:21
ide不会出现这种错误,是你的代码的错误。 我曾经碰到过,是因为在综合时这个引脚没有用而被优化掉了。去看看综合后的原理图,看这个脚是不是已经不在了。
点赞  2010-3-10 15:23
另外一定要看编译结果,会告诉你是不是因为没有用而被优化掉
点赞  2010-3-10 15:26

回复 板凳 wangkj 的帖子

// seg.v
module seg(wei,seg,clk_48M);
output wei;
output[7:0] seg;
input clk_48M;

reg[7:0] seg;
reg[25:0] count;
reg[5:0] flag;
reg wei;

always@(posedge clk_48M)
wei<=0;

always@(posedge clk_48M)
begin
count<=count+1;
   begin
   if(count==26'b10_1101_1100_0110_1100_0000_0000)
   begin
flag<=flag+1;
   case(flag)
   0:     seg<=8'b11000000;         //0
   1:     seg<=8'b11111001;         //1
   2:     seg<=8'b10100100;         //2
   3:     seg<=8'b10110000;         //3
   4:     seg<=8'b10011001;         //4
   5:     seg<=8'b10010010;         //5
   6:     seg<=8'b10000010;         //6
   7:     seg<=8'b11111000;         //7
   8:     seg<=8'b10001000;         //8
   9:     seg<=8'b10010000;         //9
   10:    seg<=8'b10001000;         //a
   11:    seg<=8'b10000011;         //b
   12:    seg<=8'b11000110;         //c
   13:    seg<=8'b10100001;         //d
   14:    seg<=8'b10000110;         //e
   15:    seg<=8'b10001110;         //f      
   default: begin
            flag<=0;
            seg<=8'b11000000;
            end
   endcase
   end
   else seg<=seg;
   end
end

endmodule


补充一下
当有那条flag<=flag+1;的指令时,编管脚的时候,clk出来了
但没有那条指令的时候,又出现那种没有clk的情况了,这是为什么呢?

就算我没输入flag那条指令,我count的那些也必须依靠clk来执行啊,没可能把clk优化掉吧?

[ 本帖最后由 jas0n 于 2010-3-10 17:00 编辑 ]
点赞  2010-3-10 16:44

回复 5楼 wonderglass 的帖子

在哪看,是综合里面那个.srr的文件吗?
点赞  2010-3-10 16:55
我没有把你的代码实际编译,但是估计你也找到问题所在了。 没有flag<=flag+1这条语句, case结构就没有意义,所以有可能先把你的整个case结构给优化掉。没有了case语句, if语句又变得没有意义,所以if语句有可能也被优化掉。
此外你的代码中还有个不好的习惯,这种时序电路最好要有个reset引脚,给flag, count开机时一个明确的初值。
点赞  2010-3-10 17:50

回复 8楼 wonderglass 的帖子

感谢wonderglass,基本上知道了软件优化代码的方式了
嗯嗯,谢谢你的提醒,我刚学习fpga,觉得用reset比较麻烦,就省掉了
顺便问句,我有个流水灯的程序,也是省掉了reset,但是每次上电的初始状态都是2、3盏灯同亮,然后流了几下后才真正实现流水灯的状态,不知道是不是省掉reset的恶果?
点赞  2010-3-10 18:00

回复 9楼 jas0n 的帖子

我估计是。 想想看在数电设计中,寄存器如果没有初始复位,初始态将是随机, 那么开机时就不一定会落在你的循环体内,如果你的代码写的好的话,经过几个周期能自动回到正确的循环体。
点赞  2010-3-12 12:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复