综合原理图,后两个always没有综合进去,高手指点

[复制链接]
2402|5
 楼主| yunlaishi 发表于 2009-7-2 09:05 | 显示全部楼层 |阅读模式
`timescale&nbsp;1ns&nbsp;/&nbsp;1ns<br /><br />/********************************************************************************<br />**&nbsp;模块名称:24位计数器<br />**&nbsp;功能描述:<br />********************************************************************************/<br />module&nbsp;counter(<br />&nbsp;&nbsp;&nbsp;clk,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//基准时钟<br />&nbsp;&nbsp;&nbsp;fin,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//转速信号输入<br />&nbsp;&nbsp;&nbsp;dataout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//发送的24bit数据&nbsp;<br />&nbsp;&nbsp;&nbsp;);<br />&nbsp;input&nbsp;&nbsp;&nbsp;clk;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//基准时钟<br />&nbsp;input&nbsp;&nbsp;&nbsp;fin;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//转速信号<br />&nbsp;output&nbsp;&nbsp;&nbsp;[23:0]dataout;<br />&nbsp;<br />&nbsp;reg&nbsp;&nbsp;&nbsp;&nbsp;state;<br />&nbsp;reg&nbsp;&nbsp;&nbsp;&nbsp;[23:0]&nbsp;dataoutbuf24;&nbsp;&nbsp;&nbsp;//转速信号缓存,转速信号输出<br />&nbsp;reg&nbsp;&nbsp;&nbsp;&nbsp;[15:0]&nbsp;dataoutbuf16;<br />&nbsp;reg&nbsp;&nbsp;&nbsp;&nbsp;[7:0]&nbsp;&nbsp;dataoutbuf8;<br />&nbsp;reg&nbsp;&nbsp;&nbsp;&nbsp;latch_clr,setdata&nbsp;;&nbsp;&nbsp;&nbsp;//<br />&nbsp;wire&nbsp;&nbsp;&nbsp;cout16ove,ove;<br />&nbsp;parameter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zero&nbsp;=&nbsp;16'd0,COUNT&nbsp;=&nbsp;1'b0,LATCH_CLR&nbsp;=&nbsp;1'b1&nbsp;;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;always&nbsp;@(posedge&nbsp;clk&nbsp;&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;(state)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COUNT:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(latch_clr)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&lt=&nbsp;LATCH_CLR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!setdata)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//无锁存溢出信号,正常+1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataoutbuf16&nbsp;&lt=&nbsp;dataoutbuf16&nbsp;+&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(cout16ove)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataoutbuf8&nbsp;&lt=&nbsp;dataoutbuf8&nbsp;+&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&lt=&nbsp;COUNT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LATCH_CLR:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataoutbuf24&nbsp;&lt=&nbsp;{dataoutbuf16,dataoutbuf8};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataoutbuf16&nbsp;&lt=&nbsp;16'd0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataoutbuf8&nbsp;&lt=&nbsp;8'd0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;latch_clr&nbsp;&lt=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setdata&nbsp;&lt=&nbsp;0;&nbsp;&nbsp;&nbsp;//清&nbsp;&nbsp;输出数据全1&nbsp;使能位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&lt=&nbsp;COUNT;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:state&nbsp;&lt=&nbsp;COUNT;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endcase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;<br />&nbsp;assign&nbsp;dataout&nbsp;=&nbsp;dataoutbuf24;<br />&nbsp;assign&nbsp;cout16ove&nbsp;=&nbsp;(&dataoutbuf16);<br />&nbsp;assign&nbsp;&nbsp;ove&nbsp;=&nbsp;(&dataoutbuf16)&(&dataoutbuf8);&nbsp;&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;always&nbsp;@(posedge&nbsp;fin)<br />&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;latch_clr&nbsp;&lt=&nbsp;1'b1;<br />&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;always&nbsp;@(posedge&nbsp;ove)<br />&nbsp;&nbsp;&nbsp;&nbsp;begin<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setdata&nbsp;&lt=&nbsp;1'b1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />endmodule&nbsp;
 楼主| yunlaishi 发表于 2009-7-2 09:09 | 显示全部楼层

对于verilog只是看了写书,第一回实践就失败

综合时,有报错,说fin,ove,&nbsp;都没有用到,看原理图,里面太简单,fin根本没有引进去
 楼主| yunlaishi 发表于 2009-7-2 09:30 | 显示全部楼层

这是24位计数器, 不是虚序列FFT变换

fin上升沿触发clk的计数,在触发后第一个clk到来的时候,把fin锁存进来的锁存计数信号,清掉,<br />我知道有问题啊,希望高手能帮我分析下,谢谢了,我也看了些人家的&nbsp;源代码,可是还不是&nbsp;很确定原因,是不是我编的是异步状态机那
zl8197 发表于 2009-7-12 20:00 | 显示全部楼层

看楼主用的是什么综合工具了

其实,楼主的程序单从语法讲没有问题。但和综合工具的有关,不同的综合工具理解不同。如果你用synplify,就是你现在的情况。如果用的是quartus,是能综合出寄存器用fin或ove打1的结果。synplify也可以设置,让其能理解这种写法。
sunnyzeng1 发表于 2009-7-25 01:00 | 显示全部楼层

re

最后两个REG状态根本没有翻转,所以综合工具直接就把fin、ove直接赋给原latch_clr和setdata信号了,从而将后者优化了。建议跑综合的时候看看告警,应该能知道原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

90

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部