分析verilog小程序,只有几句,有仿真图

来源:百度知道 编辑:UC知道 时间:2024/09/21 06:37:18
module ddd(fout, fin,Q,temp);
input fin; //40mhz
output fout,Q,temp;
wire temp;
reg Q;

always@(posedge fout)
begin
Q <= temp;
end

assign temp = ~Q;
assign fout = ~(temp^fin);
endmodule
这个函数实际上实现的是二倍频,再仔细看一下,应该是能过硬件传输延时实现的,他的缺点应该是fout的高电平时间只是一个延时出现的,很短,会造成后级处理不稳定,但他可以在输入频率很高时仍能实现二分频,这个高不知能不能高于时钟的一半?如果fin的频率不算高,也可以加一个延时使fout的高电平长一些,这样会使后级处理稳定。有道理吗?

1. fout 作为输出,怎么不是寄存器输出,而且怎么能当时钟使用?
2. 没有reset信号
3. assign fout=~(temp^fin) ,然后fout又当做时钟来对Q赋值,对temp赋值。这是死循环!
4. 所有的代码狗屁不通!犯了很多基本的错误

补充1 倍频电路并不是使用数字电路,而是使用PLL,因为数字的倍频是不稳定的
你只考虑到仿真的问题,并没有考虑到综合的问题。那我问你,你的那个延迟怎么综合?

楼主的程序可读性的太差,时钟输入不用CLK用fine, 错误太多了,无法综合。以后仿真还是用ModelSim 吧。
楼主 回去认真的看3便书吧。 你就是在胡扯蛋玩。
还有倍频的话你还是用调用IP来控制PLL倍频把。