1 运行环境是cpld,外部时钟27M。因为有些信号不需要这么高的时钟,所以内部做了一个毫秒发生器,用毫秒发生器的输出做时钟,响应一些事件。这种做法,我在两个项目中都用过
出现的现象是:在第一个项目中,编译时没有发生报警,在第二个项目中发生报警,说某些信号建立时间不够。
怀疑:第一个项目中用毫秒发生器同步的逻辑较少,而且比较简单,第二个项目逻辑比较复杂,可能是因为比较复杂,所以时间不够
我的问题:在cpld中编写毫秒发生器,然后用这个发生器做时钟,这中方法是否正规,能不能这样用?
2 在看一些fpga例程的时候,曾经看到过这样的编写方式
always @(state)beging (第一种写法)
end
但是我在看书时,也看到过,说在fpga中用verilog编程时,always事件只能用posedge,或者negedge,如
always @(posedge state)begin (第二种写法)
end
不能做电平事件,否则综合无法通过,我用电平编译时有时会出报警
我的问题是,综合时,是支持第一种写法,还是支持第二种写法? |