我是靠谱客的博主 默默火车,最近开发中收集的这篇文章主要介绍HDLBits刷题记录 Circuits—Combinational Logic—Basic Gates,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
·Truth tables
解决方法:
1、直接列原始逻辑表达式,走数据流assign
2、将原始逻辑表达式通过化简得到canonical function,再走assign
3、观察Truth table规律,走抽象级(最简算法)
module top_module (
input x3,
input x2,
input x1,
output f
);
// This truth table has four minterms.
assign f = ( ~x3 & x2 & ~x1 ) |
( ~x3 & x2 & x1 ) |
( x3 & ~x2 & x1 ) |
( x3 & x2 & x1 ) ;
// It can be simplified, by boolean algebra or Karnaugh maps.
// assign f = (~x3 & x2) | (x3 & x1);
// You may then notice that this is actually a 2-to-1 mux, selected by x3:
// assign f = x3 ? x1 : x2;
endmodule
·Thermostat 恒温器
module top_module(
input too_cold,
input too_hot,
input mode,
input fan_on,
output heater,
output aircon,
output fan
);
// Reminder: The order in which you write assign statements doesn't matter.
// assign statements describe circuits, so you get the same circuit in the end
// regardless of which portion you describe first.
// Fan should be on when either heater or aircon is on, and also when requested to do so (fan_on = 1).
assign fan = heater | aircon | fan_on;
// Heater is on when it's too cold and mode is "heating".
assign heater = (mode & too_cold);
// Aircon is on when it's too hot and mode is not "heating".
assign aircon = (~mode & too_hot);
// * Unlike real thermostats, there is no "off" mode here.
endmodule
·Even longer vectors 向量元素之间的关系
module top_module(
input [99:0] in,
output [98:0] out_both,
output [99:1] out_any,
output [99:0] out_different );
assign out_both = in[99:1] & in[98:0];
assign out_any = in[99:1] | in[98:0];
assign out_different = in ^ {in[0], in[99:1]};
endmodule
最后
以上就是默默火车为你收集整理的HDLBits刷题记录 Circuits—Combinational Logic—Basic Gates的全部内容,希望文章能够帮你解决HDLBits刷题记录 Circuits—Combinational Logic—Basic Gates所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复