问题标签 [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.
boolean-logic - 打开或关闭逻辑门
如果我有一个带有三个输入“A、B 和控制线 C”的“与门”
我可以控制开关与门的开或关吗.. 就像这样如果 C == 1 那么与门与输入 A,B 一起工作 如果 C==0 那么什么也不会发生
这可以通过任何方法完成吗?
scala - Chisel: how to avoid errors NO DEFAULT SPECIFIED FOR WIRE
I'm trying to implement a structured read port to Mem:
When I use combinational
instead of sequential
I get errors
What is the meaning of this error message?
The second question:
Is it possible to have a structured red port a la SystemVerilog, i.e. read directly
instead of
Thanks!
scala - 在 Chisel 中有 Vec[Mem] 会很好
对 Vec[Mem] 来说说集合关联缓存会很好。
不幸的是,Chisel 不支持 Vec[Mem] 构造:
确实:
但是,一个简单的解决方法可以正常工作:
并用于编写标签(在某些 when(...) 子句下的原因)
意见,改进拟议方案的建议?谢谢!
assembly - MIPS 指令集的字节操作
我想使用 MIPS 指令集进行一些字节操作。
- 我有 register
$S0
which has0x8C2E5F1E
和 register$S1
which has0x10AC32BB
。 - 我想将 , 的第二个字节存储到
$S0
,5F
的第三个字节$S1
中AC
。
我的逻辑是将寄存器的字节存储$S0
到另一个寄存器中,将其转移到所需的字节。然后我会和$S1
注册0xFF00FFFF
。最后,我将只是或两个寄存器。听上去怎么样?这是对的吗?有更好的办法吗?
任何建议或解决方案将不胜感激。
scala - Chisel 既没有为 verilog 也没有为 C++ 综合
对于以下片段 Chisel 没有合成:
如果手动展开循环 for (level <- 1 until num_levels) 并折叠常量,则行为相同:
为两个片段(原始和展开/实例化的 16 路案例)生成的 verilog(和类似的 C++ 代码):
不太明白为什么只有虚拟结构 我应该怎么做才能强制综合逻辑?谢谢!
c - 与使用语言的标准操作相比,用 C 语言建模数字电路是否有任何实际好处?
因此,我开始研究数字电路设计并发现几乎每个操作(我知道)都源自 3 个逻辑操作:AND、OR和NOT。作为一个类比,这些有点像构成其他一切的原子的亚原子粒子。亚原子粒子之于逻辑门,就像原子之于处理器指令一样。如果用汇编编程就像把原子放在一起,那么用 C 语言编程就像把分子(和原子)放在一起。 有人请告诉我,如果我在这里离开基地。
话虽如此,我知道 GCC 和大多数其他编译器在从 C 到机器代码的优化方面做得很好。假设我们正在查看 x386 指令集。$$
如果我只使用、||
和构建一个 32 位全加器~
,编译器是否足够聪明,可以使用处理器提供的现有指令,或者我的全加器最终会成为一个更臃肿、效率更低的版本处理器。
免责声明:
我开始研究数字电路是为了开始学习汇编,我在 C 语言中是公平的。我想用 C 语言对这些电路中的一些电路进行建模,以进一步了解数字电路,因为这些是我理解的术语。但我不想引诱自己误以为使用简单的代码也会是高效的代码(或学习以外的任何其他实际好处)+
。是的,我知道代码的可怕可维护性将远远超过这种编码“风格”可能提供的任何好处。
algorithm - Number theory: solution need
Suppose a = a31 a30 . . . a1 a0
is a 32-bit binary word.
Consider the 32-bit binary word b = b31 b30 . . . b1 b0
computed by the following algorithm:
- Scan a from right to left and copy its bits to
b
until the first1
is found (which is also copied tob
) - After that, copy the Boolean negations of the bits in
a
.
For example, a = 10100 . . . 00
is transformed to b = 01100 . . . 00
. Explain what this algorithm computes if a
and b
are interpreted as binary numbers.
c - 将 4 位分配给 8 位寄存器
如何在一个步骤中将一个寄存器(8 位)中的最高半字节(4 位)分配给另一个寄存器的最高半字节?不改变 4 个 LSb?
这是我提出的解决方案,当我可以分两步完成时,但我相信有更巧妙的解决方案只需一步即可完成(可能需要更少的门或指令):
- REGA &= (REGB | 0x0F);
- REGA |= (REGB & 0xF0);
任何擅长数字设计的人都可以帮忙吗?(现在是凌晨 3 点,我睡不着觉:-/)
digital - 什么是异步电路?
有组合电路和时序电路。在时序电路中,使用了存储元件。是异步电路,电路中也使用了触发器之类的存储元件。以及它们如何不稳定,这使其成为电路的糟糕选择。如何解释异步电路的不稳定性?