我正在尝试用Python编写电路原理图绘制工具.我正在创建一个基于字典的简单数据库,它包含所有组件及其属性.我还试图创建一种简单的查询语言,您可以选择,例如,所有电阻值> 100欧姆或足迹='0402'
到目前为止,我可以使用一些原始谓词搜索选择事物,然后使用联合和交集来处理更复杂的事情.
但是,我很难定义纯粹否定搜索的语义应该是什么.例如,像
足迹!='0402'
应该选择占地面积不等于0402的所有项目.但仅使用交叉点进行此操作会给我一个空白结果.为此,我需要选择所有组件,然后与"not 0402"相交以删除我不想要的组件.
但这似乎是一种蛮力,似乎是一种可疑的解决方案.我对使用"真正的"数据库和查询语言不感兴趣,所以请不要这么做.我在这里寻找合适的工程原理,不一定是解决问题的方法.
这个问题在SICP的书中得到了一定程度的介绍,但我很困惑,因为我认为他们也在使用延续和东西,我还没有.
有人可以解释一下"正确"用法应该是什么,以消极地选择东西.我在商业CAD工具想这和它的工作如预期,但我已经看到了一些SQL查询的例子(我认为),它选择的事情第一,然后删除不需要的人.
谢谢
迈克尔
我需要在verilog中使用分频器,我在下面编写了代码.它有效,但我想知道是否是最好的解决方案,谢谢!
module frquency_divider_by2 ( clk ,clk3 );
output clk3 ;
reg clk2, clk3 ;
input clk ;
wire clk ;
initial clk2 = 0;
initial clk3 = 0;
always @ (posedge (clk)) begin
clk2 <= ~clk2;
end
always @ (posedge (clk2)) begin
clk3 <= ~clk3;
end
endmodule
Run Code Online (Sandbox Code Playgroud)
由quartus生成的电路:

我正在开发一个项目,即在FPGA上制作一个简单的音乐播放器.它从PC获取指定格式的音乐文件,并在循环中大声播放.
我们需要实现标准音符长度,即半个节拍的Quaver,2个节拍的Minim等.目前我们在不同的BPM值下有一个节拍长度表的时钟周期数.我们需要将它们乘以这些音符长度以产生正确的时钟周期.唯一的问题是Tuplet,这是一个完整节拍的三分之一.
如果没有实现完整的分频器电路,是否有任何数学技巧可以将大约3的整数除以?
我想在Haskell中表示具有以下行为的电路:
该电路有两个输入:
和一个输出.
True然后输出t =输入tFalse,输出t =输出t-1我需要一种方法来表示反馈循环和状态.
我知道有几个库提供这种东西的抽象,但它们对我来说看起来很神奇.
有一种简单的方法来模拟这个吗?
编辑:
type Signal a = [a]
type Input = Signal Int
type Output = Signal Int
type State = Int
type Switch = Signal Bool
delay :: a -> Signal a -> Signal a
delay = (:)
circuit :: State -> Input -> Switch -> Output
circuit s (i:is) (True:bs) = i : circuit i is bs
circuit s …Run Code Online (Sandbox Code Playgroud) 我有一个多路复用器的功能。
// Enumerated type for a single bit.
typedef enum { FALSE=0, TRUE=1 } BIT;
BIT multi(BIT A, BIT B, BIT C, BIT D, BIT S1, BIT S0)
{
if(S1== FALSE && S0 ==FALSE)
return A;
else if(S1==FALSE && S0==TRUE)
return B;
else if (S1== TRUE && S0== FALSE)
return C;
else
return D;
}
Run Code Online (Sandbox Code Playgroud)
对于多路复用器,S1、S0 为两位二进制数,按给定顺序索引到 A、B、C、D。
因此,S1==0 & S0==0 指的是 A,S1==0 & S0==1 指的是 B 等等。
我觉得我的代码很接近或很遥远,或者它是正确的,我只需要修复我在 main 中测试它的方式,其中我有......
assert(multiplexer(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) == A);
assert(multiplexer(TRUE, …Run Code Online (Sandbox Code Playgroud) 我想问:有A,B和C任何二进制数.获得后C = A & B(&为AND运营商),是否有可能恢复A从B和C?
我知道A通过操作将丢失信息.我们可以形成一个类似的功能B <...> C = A,以及它的复杂程度如何?
例如:
A = 0011 B = 1010 C = A & B = 0010
的第2位C是1,即第2位A和B必须1.但是,其他位缺少要恢复的信息.
先感谢您.
我更新了 Visual Studio 19,在此之前我的网站完全按照我的预期运行。现在,当我加载主页时出现错误,但在完成加载之前就中断了。我在下面提供了错误代码。我还想告诉您,我已经看过这篇文章(How to open CircuitOptions.DetailedErrors?)并尝试了所有方法,但没有成功。
Information: Normalizing '_blazor' to
'http://fakesite.com/_blazor'.
Error: There was an unhandled exception on the current circuit, so this
circuit will be terminated. For more details turn on detailed exceptions in
'CircuitOptions.DetailedErrors'
Information: Connection disconnected.
Run Code Online (Sandbox Code Playgroud)
实施汉克斯解决方案后出现新错误
Error: Microsoft.JSInterop.JSException: Could not find 'FormLayout' in 'window.DxBlazor'.
Error: Could not find 'FormLayout' in 'window.DxBlazor'.
at http://fakesite.com/_framework/blazor.server.js:8:27768
at Array.forEach (<anonymous>)
at d (http://fakesite.com/_framework/blazor.server.js:8:27729)
at http://fakesite.com/_framework/blazor.server.js:8:28342
at new Promise (<anonymous>)
at e.beginInvokeJSFromDotNet (http://fakesite.com/_framework/blazor.server.js:8:28316)
at http://fakesite.com/_framework/blazor.server.js:1:19148
at Array.forEach (<anonymous>) …Run Code Online (Sandbox Code Playgroud) 我看到用于从NAND门进行OR门的图表使用3个与非门,但是如果你有两个输入连接到NAND门的两个连接器,然后该门的输出作为第二个NAND门的两个连接器的输入它应该像OR门一样.所以你只需要2个门?

编辑:下面这张照片是我在richardbowles网站上做的一次尝试,这让我觉得它可能有效.我使用OR门尝试创建不允许(有充分理由)的连接.我现在意识到(有点)这是垃圾
