概述
需要实现的电路
![](https://file2.kaopuke.com:8081/files_image/20230520/20200724115839911.png)
代码
代码1
module top_module (
input clk,
input in,
output reg out);
reg d;
always@(*)
d = in^out;
always@(posedge clk)begin
out <= d;
end
endmodule
生成电路
代码2
module top_module (
input clk,
input in,
output reg out);
reg d;
always@(posedge clk)begin
d = in^out; // 注意这里是阻塞赋值
out <= d;
end
endmodule
生成电路
代码3
module top_module (
input clk,
input in,
output reg out);
reg d;
always@(posedge clk)begin
d <= in^out; // 注意这里为非阻塞赋值
out <= d;
end
endmodule
生成电路
由于采用非阻塞赋值,导致,当前拍(时钟上升沿)得到的d,需要在下一拍才能传递到out
处,因此综合出来的电路会多出一个Reg。
总结
组合电路部分最好和时序电路放在不同的always块中实现,能够极大程度避免综合出的电路和设想之间出现差异。还有一点感悟就是:如何利用手头现有的模块实现现有功能。
最后
以上就是迅速酸奶为你收集整理的将组合逻辑放到时序逻辑中的全部内容,希望文章能够帮你解决将组合逻辑放到时序逻辑中所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复