马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
最近在写大作业,是控制电梯的。因为第一次写大程序,更是第一次综合,所以问题不断。不过我正在努力解决问题。现在又发现一个问题,感觉我已有的知识已经解决不了。具体是:因为要求电梯的信号请求要持续检测到2个周期,肯定要计数把,但是验证没有问题,综合就出问题了。
我写了一个简单的程序来证明确实这是个问题,具体见下面。
、
没有带计数的综合
module Lift7( clk,
a,
b
);
//端口类型定义
input clk;
input a;
output b;
//端口数据类型定义
reg b;
reg c; //zhong jian bian lian
//*****************端口和数据定义结束***************************************//
always @ (posedge clk)
begin
c<=a;
begin
if(c)
b<=1;
else
b<=0;
end
end
endmodule
综合结果是
结果应该是正确的。
下面是带了计数的程序:
module Lift7( clk, a, b ); //端口类型定义 input clk; input a; output b; //端口数据类型定义 reg b; reg c; //zhong jian bian lian reg count;//jishu //*****************端口和数据定义结束***************************************//
always @ (posedge clk) begin c<=a; if((count==0)&&(count==1)) begin count<=count+1; if(count==1) begin count<=0; if(c) b<=1; else b<=0; end end else count<=0; end endmodule
综合结果是:
也没有那个原理图,只有符号图。这个情况跟我的大作业情况一样,大作业说是中间大部分变量都是常数或什么的给优化掉了,结果就省端口了,没有跟其他的连接。
总结:我就是不明白,这里加个计数为什么结果就是这样了?那么要怎么写计数程序,才能综合出来呢? 大家帮忙看看,这个问题困扰好几天了,好痛苦啊。。。 |