综合原理图,后两个always没有综合进去,高手指点
`timescale 1ns / 1ns<br /><br />/********************************************************************************<br />** 模块名称:24位计数器<br />** 功能描述:<br />********************************************************************************/<br />module counter(<br /> clk, //基准时钟<br /> fin, //转速信号输入<br /> dataout //发送的24bit数据 <br /> );<br /> input clk; //基准时钟<br /> input fin; //转速信号<br /> output dataout;<br /> <br /> reg state;<br /> reg dataoutbuf24; //转速信号缓存,转速信号输出<br /> reg dataoutbuf16;<br /> reg dataoutbuf8;<br /> reg latch_clr,setdata ; //<br /> wire cout16ove,ove;<br /> parameter zero = 16'd0,COUNT = 1'b0,LATCH_CLR = 1'b1 ; <br /> <br /><br /><br /><br /><br /> <br /> always @(posedge clk )<br /> begin<br /> case (state)<br /> COUNT: <br /> begin <br /> if(latch_clr)<br /> state <= LATCH_CLR;<br /> else<br /> begin<br /> if(!setdata) //无锁存溢出信号,正常+1<br /> begin<br /> dataoutbuf16 <= dataoutbuf16 + 1;<br /> if(cout16ove)<br /> dataoutbuf8 <= dataoutbuf8 + 1;<br /> end<br /> end<br /> state <= COUNT;<br /> end<br /> LATCH_CLR:<br /> begin<br /> dataoutbuf24 <= {dataoutbuf16,dataoutbuf8};<br /> dataoutbuf16 <= 16'd0;<br /> dataoutbuf8 <= 8'd0;<br /> latch_clr <= 0;<br /> setdata <= 0; //清 输出数据全1 使能位<br /> state <= COUNT;<br /> end<br /> default:state <= COUNT; <br /> endcase <br /> end<br /> <br /> assign dataout = dataoutbuf24;<br /> assign cout16ove = (&dataoutbuf16);<br /> assign ove = (&dataoutbuf16)&(&dataoutbuf8); <br /> <br /> <br /> <br /> always @(posedge fin)<br /> begin<br /> latch_clr <= 1'b1;<br /> end<br /> <br /> always @(posedge ove)<br /> begin<br /> setdata <= 1'b1;<br /> end<br /> <br />endmodule 对于verilog只是看了写书,第一回实践就失败
综合时,有报错,说fin,ove, 都没有用到,看原理图,里面太简单,fin根本没有引进去这是24位计数器, 不是虚序列FFT变换
fin上升沿触发clk的计数,在触发后第一个clk到来的时候,把fin锁存进来的锁存计数信号,清掉,<br />我知道有问题啊,希望高手能帮我分析下,谢谢了,我也看了些人家的 源代码,可是还不是 很确定原因,是不是我编的是异步状态机那看楼主用的是什么综合工具了
其实,楼主的程序单从语法讲没有问题。但和综合工具的有关,不同的综合工具理解不同。如果你用synplify,就是你现在的情况。如果用的是quartus,是能综合出寄存器用fin或ove打1的结果。synplify也可以设置,让其能理解这种写法。re
最后两个REG状态根本没有翻转,所以综合工具直接就把fin、ove直接赋给原latch_clr和setdata信号了,从而将后者优化了。建议跑综合的时候看看告警,应该能知道原因。
页:
[1]