Architecture 编写电路的逻辑函数

Architecture 编写电路的逻辑函数,architecture,logic,Architecture,Logic,正如我在上一个问题中提到的,我对编程和计算机的世界还相当陌生,刚刚开始了一个大学课程 我真的很难接受写电路的逻辑函数 我想知道是否有人能对这些有逻辑功能 http://www.flickr.com/photos/78651059@N07/7041822113/in/photostream http://www.flickr.com/photos/78651059@N07/7041821965/in/photostream/ http://www.flickr.com/photos/7865105

正如我在上一个问题中提到的,我对编程和计算机的世界还相当陌生,刚刚开始了一个大学课程

我真的很难接受写电路的逻辑函数

我想知道是否有人能对这些有逻辑功能

http://www.flickr.com/photos/78651059@N07/7041822113/in/photostream http://www.flickr.com/photos/78651059@N07/7041821965/in/photostream/ http://www.flickr.com/photos/78651059@N07/7041821833/in/photostream/ http://www.flickr.com/photos/78651059@N07/7041822113/in/photostream http://www.flickr.com/photos/78651059@N07/7041821965/in/photostream/ http://www.flickr.com/photos/78651059@N07/7041821833/in/photostream/ 任何帮助都将不胜感激。

哦,天哪:)

我在大学的时候经常这样做。一个很好的起点是从编写电路的布尔代数公式开始。当你第一次开始的时候,只需要保持它的基本性,在你写出完整的公式之前,不要担心减少公式

如果你有特定的问题,或者在赛道的特定部分遇到困难,我很乐意帮助你。只要找出你到底被困在哪里

噢,天哪:)

我在大学的时候经常这样做。一个很好的起点是从编写电路的布尔代数公式开始。当你第一次开始的时候,只需要保持它的基本性,在你写出完整的公式之前,不要担心减少公式


如果你有特定的问题,或者在赛道的特定部分遇到困难,我很乐意帮助你。只要找出你到底被困在哪里

在我看来,这些语法的翻译非常简单。例如,在C中,
XOR
^
&
不是
~
,因此第一个电路将显示为:

Y = (A & ~B) ^ C;
最大的区别在于C(像大多数普通编程语言一样)没有任何一个位的数据类型,因此这实际上代表了至少8个并行电路副本(即,a、B和C的数据类型通常至少各有一个字节)

我将不讨论其他内容,但我要指出的是,在许多情况下,从输出到输入的反向工作是最容易的,而不是从输入到输出的(可能更明显)路线

编辑:oops:有点忘了提到它,但是在C中,
|

编辑:为了简化事情,编写一些小函数作为逻辑门可能是最简单的(至少是第一步):

int bitwise_and(int a, int b) {  return a & b); }
int bitwise_or(int a, int b)  {  return a | b;  }
int bitwise_not(int a)        {  return ~a;     }
int bitwise_xor(int a, int b) {  return a ^ b;  }

然后,您基本上可以将逻辑图中的一个门转换为函数调用,因此,例如,将a和B作为输入并产生Y作为输出的OR门将变成
Y=按位_或(a,B)

在我看来,这些语法的翻译非常简单。例如,在C中,
XOR
^
&
不是
~
,因此第一个电路将显示为:

Y = (A & ~B) ^ C;
最大的区别在于C(像大多数普通编程语言一样)没有任何一个位的数据类型,因此这实际上代表了至少8个并行电路副本(即,a、B和C的数据类型通常至少各有一个字节)

我将不讨论其他内容,但我要指出的是,在许多情况下,从输出到输入的反向工作是最容易的,而不是从输入到输出的(可能更明显)路线

编辑:oops:有点忘了提到它,但是在C中,
|

编辑:为了简化事情,编写一些小函数作为逻辑门可能是最简单的(至少是第一步):

int bitwise_and(int a, int b) {  return a & b); }
int bitwise_or(int a, int b)  {  return a | b;  }
int bitwise_not(int a)        {  return ~a;     }
int bitwise_xor(int a, int b) {  return a ^ b;  }

然后,您基本上可以将逻辑图中的一个门转换为函数调用,因此,例如,将a和B作为输入并产生Y作为输出的OR门将变成
Y=按位_或(a,B)

所以只需取每个门,写出每个门的真值表?你想要y的方程,或者想知道电路@Bananaco的真值表?那么只需取每个门,写出每个门的真值表?你想要y的方程,或者想知道电路@Bananaco的真值表?所以这将涉及到为每个门计算真值表大门?@Bananaco:真相表?不,通常不会。如果你想简化电路,你可以这样做(但大多数时候Demorgan定理已经足够了),但是仅仅转换成一种编程语言根本不需要。谢谢你提供的信息和帮助。非常感谢。我仍然有点被困在这个问题上。@Bananaco:我在回答中编辑了一个进一步的建议。所以这将涉及到为每个门制定真理表?@Bananaco:真理表?不,通常不会。如果你想简化电路,你可以这样做(但大多数时候Demorgan定理已经足够了),但是仅仅转换成一种编程语言根本不需要。谢谢你提供的信息和帮助。非常感谢。我仍然对这个问题有点困惑。@Bananaco:我在回答中编辑了进一步的建议。