问题标签 [digital-logic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
937 浏览

digital-logic - Using opcodes in digital circuit design

I'm working on a circuit which performs basic operations such as addition and subtraction using logic gates.

Right now, it takes 3 inputs, two 4 bit numbers, and a 3 bit opcode which indicates what operation to perform.

It seems that a 3-8 decoder would be a good idea here. This is my mockup!

enter image description here

To give a little more context, here is what my adder circuit looks like (+). I designed it to take two 4 bit numbers X & Y:

enter image description here

However, what I am confused about is the fact that I have to feed in 4 inputs or 4 wires to each of the circuit that handles it's respective operations (+, -, =, etc). It appears to only connect one wire to the circuit I need to get to. I need to actually connect 8 wires, as I have to feed in the to 4 bit numbers.

UPDATE: I ended up using a MUX to select the output that I want.

enter image description here

0 投票
1 回答
387 浏览

vhdl - 通用位滑模块

我想实现一个通用的位滑模块。下面是我想为 4 和 8 做的一个例子。我不知道如何编写代码,所以我可以传递一些通用的 N 并且代码将使用 for 循环或其他东西自动生成。

0 投票
1 回答
8966 浏览

vhdl - 组件实例“d0:or2”没有默认绑定。# (组件端口“out1”不在实体上。)

我正在尝试使用结构代码在 VHDL 中构建一个异或门。我使用其他方法构建了相同的门,以使用测试台比较输出。

这是 xor_structural.vhdl 文件。我自己构建了and、or 和nand。我认为他们不需要进入单独的文件,因为它编译得很好。该文件和测试台编译没有问题,但我无法运行模拟。

测试台和其他模拟效果很好,但是当我尝试运行模拟时,出现以下错误。

我认为我缺少一些关于结构代码的东西。

Xor_struktur.vhdl entity and2 是端口(A, B : in bit; Y : out bit);最终实体和2;

测试台文件

0 投票
3 回答
18947 浏览

vhdl - 具有行为架构的桶形移位器的 VHDL 代码结构

我正在尝试构建一个具有左右移位功能的 16 位桶形移位器。我在如何构造代码方面遇到了一些问题,以便它可以做我想做的事情。

我有一个决定方向的操作码输入、一个要移位的输入向量、一个输出向量和一个 4 位的位置向量。

我正在使用位置向量以某种方式设置移位“级别”。我想检查位置(0),如果它设置为 1,则移动一个位置。然后检查 position(1) 和 shift 2 个位置, position(3) 4 个位置和 position(3) 8 个位置。

我认为,如果我遍历位置向量中的每个位置并顺序移动位,它最终应该会得到所有选项。当这个方向正常工作时,我将添加另一个操作码。

我坚持为架构分配中间向量。我不确定正确的方法应该是什么,我在谷歌中找不到任何东西。也许案例系统会更好地工作。

错误信息

编辑

感谢您的详细回复。我知道有内置的通用移位功能,但我想尝试弄清楚如何自己实现它。

感谢您提供有关 bit_vector 的提示。据我了解,只有在您确定输入不是多源的时才可以使用位类型。在这种情况下,它可能应该没问题,但我会继续并记住它以备将来使用。

我认为我想尝试的概念是合理的。如果您检查位置中的每个位是否为 1 并在最后移动适当的数量,则移动的位数将等于位置向量的值。

a = "1111 1111 1111 1111" 和 pos = "1010" 所以我们需要移动小数点后 10 位。所以我们进行第一次迭代,它没有变化,第二次移动 2 位,第三次迭代移动 0 位,第四次移动 8 位,总共移动 10 位得到 a="1111 1100 0000 0000" .

我的问题不在于特定的移位操作(也许它是错误的,如果是这样将使用不同的方法,现在我只是好奇如何实现我的想法),我的问题是编写将更新向量然后检查的代码位置向量中的下一个位置。我正在查看您发布的有关增量周期和敏感度列表的内容。VHDL 可能会令人困惑,因为您必须根据通过处理器波动的操作来描述现实世界。它需要与标准编程不同的思维方式。

我尝试了下面的代码,但它只在我的测试台中改变和移动一次。我设置了一个测试台,它运行所有位置组合,但使用以下代码,它仅在 pos = 1000 处移动,然后移动 8 个位置。是否有任何强制代码检查每个 if 语句,而不仅仅是最后一个?

结束架构行为;

试验台

0 投票
1 回答
738 浏览

logic - 在一个从 0 到 9 的 JK 二进制计数器中,为什么与非门连接到第二个和第四个 JK 触发器而不是第一个和第四个?

在使用 4 个 JK 触发器的二进制计数器设计中,从 0 计数到 9,当第 2 个触发器 NAND 第 4 个触发器的输出等于 0 时,触发器被复位。既然二进制 9 是 1001,为什么 NAND连接到这两个输出而不是第一个和第四个,因为它是 1 的第一位和第四位。

电路图:http ://hyperphysics.phy-astr.gsu.edu/hbase/electronic/bincount.html (第二个)。

0 投票
1 回答
10165 浏览

verilog - Verilog中的频率除数

我需要一个verilog中的分频器,我编写了下面的代码。它有效,但我想知道是否是最好的解决方案,谢谢!

quartus生成的电路:

在此处输入图像描述

0 投票
1 回答
144 浏览

verilog - Verilog 示例 错误?仲裁代码 MSB 查找器

在我的书中作为一个例子,它有:

如果 n=4 则 c 为 4 位,但串联却为 5 位!0.o
)r 这里有什么我对 Verilog 不了解的地方,也许是这样。

0 投票
2 回答
256 浏览

boolean-logic - 布尔代数最小化

F = ABC + AC + C'D'

有没有办法进一步最小化这个功能,因为我想制作只有 2 个输入与非门的电路图

有什么建议么 ?谢谢

0 投票
1 回答
5106 浏览

verilog - FSM(摩尔机)verilog

当我们在verilog中编写FSM时,有两种编写FSM的方法首先是使用3个总是块(1个用于下一个状态组合逻辑+ 1个用于presene->下一个状态顺序逻辑+ 1个用于输出逻辑),第二种方法是仅使用一个总是阻塞所有 3 种操作,但两种情况下的输出波形不同..为什么会这样?

例如,我以两种方式编写了简单的 fsm,并且我的输出偏移了 20 个时间单位

第一种方式:

第二种方式

为什么输出移动了 20 个时间单位..?

0 投票
0 回答
442 浏览

binary - 纠错码校验和

问题!:将所有字节相加得到 118h。放下携带轻咬给你 18 小时。我无法理解“携带尼伯”这个词。

如果我为这个字节 10010101(95hex) 做校验和,那么校验和是 4(04hex)?


来源:http ://www.asic-world.com/digital/numbering4.html#Error_Detecting_and_Correction_Codes

" 奇偶校验方法是按字节、字或双字计算的。但是当需要检查超过 128 个字节或更多字节(基本上是数据块)的错误时,计算奇偶校验不是正确的方法。所以我们有校验和,它允许检查数据块上的错误。校验和有很多变化。

添加所有字节 CRC Fletcher 的校验和 Adler-32

最简单形式的校验和只是简单地将数据中的断言位相加,无法检测多种类型的错误。特别是,这样的校验和不会通过以下方式更改:

重新排序消息中的字节 插入或删除零值字节 多个错误总和为零

校验和示例:给定 4 个字节的数据(可以用任意数量的字节完成):25h、62h、3Fh、52h

将所有字节加在一起得到 118h。放下携带轻咬给你 18 小时。 得到 18h 的二进制补码得到 E8h。这是校验和字节。

要测试校验和字节,只需将其添加到原始字节组中。这应该给你 200 小时。

再次放下进位半字节,给出 00h。因为它是 00h,这意味着校验和意味着字节可能没有改变。”