问题标签 [synthesis]
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.
c# - C#中的和弦?
我曾尝试以低毫秒速率使用 Console.Beep() 两个“同时”播放两个频率,但哔哔声之间的停顿会破坏它。我已经尝试研究它,但除了我正在寻找的 DirectSound 之外,我什么也没找到,也不知道从哪里开始。我所需要的只是用 C# 编写一个程序,用一个扬声器同时播放两个或多个频率。
谢谢。
audio - 我想学习音频编程
在我的高中,我们可以参加一个学期的课程,我们基本上可以自己学习一门学科。我在想我想学习“声音编程”,但我意识到我不知道这意味着什么。例如,我有兴趣了解合成器的工作原理以及声音在计算机科学中的工作原理。我真的想专注于低级代码部分,而不是组合部分。这是一个可行的课题吗?对于完全不熟悉这个的人来说,有什么好的教程吗?我知道 C++ 并且正在使用 Windows。第一个答案是我感兴趣的事情(尽管它在我的头上)。
arrays - 数组索引为数组宽
在 VHDL 中访问数组时遇到以下问题:
假设我有一个大小不是 2^n 的数组,例如大小为 6。然后,如果我想使用宽度为 3 位的索引 (=ceil(log2(6))) 访问这个数组,很明显这个索引可以到达两个位置,7 和 8,这超出了我正在访问的数组的大小。Xilinx ISE 在这种情况下给了我一个警告。
我该怎么办?我可能的解决方案如下:
1.) 忽略警告。希望合成是聪明的。
2.) 仅使用大小为 2^n 的数组。希望阵列的未使用部分将被优化掉。
integer - VHDL:找出/报告整数的位宽/长度(与 std_logic_vector 相比)?
假设我需要一个信号来表示从 0 到 5 的数字;显然,这需要 3 位 std_logic 来表示(即如果 MAXVAL=5,则 bitwidth= { wcalc "floor(logtwo($MAXVAL))+1"
})。
我知道我可以这样做:
我将使用它明确指定三个 std_logic '位'的数组,并设置初始值;然后我可以使用 REPORT 打印出长度(在本例中为 3):
到现在为止还挺好。但是,假设我使用整数(数字)类型:
我猜这里的“编译器”(“合成器”)会自动推断它需要 3 位的存储长度,因为这个整数的值在 0 到 5 之间。如果是这样,我的问题是:是有可能以某种方式在报告中打印出这个位宽/长度/大小吗?
当然,诀窍是这样的:
...将失败(例如,使用“ HDLParsers:3389 - 属性的前缀长度必须是一个数组对象”),因为据我所知,所有这些属性都像'length
并且'range
仅适用于数组(了解 VHDL 属性),而整数(自然)不是数组-它是一个数字:) (VHDL向量整数转换问题)
同样,我知道我可以使用 log2(从最大值计算无符号变量的宽度?) - 但我想快速查看(在合成期间)“合成器”有多少“位”分配给最终的综合设计,因此大约将使用多少最终 FPGA 资源(特别是如果我使用“泛型”以某种方式计算整数的特定最大值)。
好吧,提前感谢您的任何回复,干杯!
编辑:一些上下文:我使用的是 ISE Webpack 9.2;我正在尝试使用“通用”变量/常量作为参数,然后使用方程式计算计数器的最大值。我猜这个计算发生在“编译”时间(这将是 ISE 中的“合成” - 而不是“实施设计”),所以我希望报告消息出现在这里(事实上我得到了它们,对于 std_logic_vector 正确的,在综合日志中 - 但是,对于我来说,相同的报告消息也发生在行为模拟开始时,这很好)。
这些报告消息的目标是确保我的方程式都正常,并且合成器不会尝试推断 32 位计数器 - 即使我只想从 0 计数到 5 :)
verilog - 无法实现简单的 ALU
我有一个在 Verilog 中描述的基本 8 位 ALU。我正在尝试实现该设计,但收到错误消息:
错误:NgdBuild:809 - 输出焊盘网络“商<1>”具有非法负载:块 Mmux_opcode[2]_GND_1_o_wide_mux_8_OUT81 上的引脚 I3,类型为 LUT6
该设计执行以下操作:加法、减法、乘法、除法、AND、OR、XOR 和 XNOR。有趣的是,Xilinx XST 无法合成除法器,除非被除数除以 2(基本上是右移)。因此,为了解决这个问题,我使用了 Xilinx Core Generator 生成的 CORE IP 组件。它需要一个时钟(没有时钟启用或同步清除,并在大约 20 个时钟周期后输出正确的商和余数。核心本身可以在核心生成器程序的数学函数下找到。无论如何,这是我的代码:
显然我的代码很糟糕,我的评论可能是错误的,但我只是 Verilog 的初学者。但是,我确实计划大大改进此代码并添加更多操作供我练习。该模块本身确实成功地合成和正确模拟,但我无法在任何 FPGA 上实现它。任何人都知道代码或Xilinx ISE(像往常一样充满错误)或项目设置是否有问题?
编辑:我对代码进行了一些更改,以反映答案提供的建议。
objective-c - Objective-c 中的 @property 和 @synthesize
当我在玩并弄清楚https://github.com/enormego/EGOTableViewPullRefresh中的工作原理时,我发现 @property 和 @synthesize 很神秘。这是我提到的代码
EGORefreshTableHeaderView.h
EGORefreshTableHeaderView.m
我已阅读此http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html,据我了解,它为代表的 _delegate 创建了新名称。(我的理解正确吗?)
但是我仍然不明白为什么他们必须用那些 @synthesize = 指令使事情变得复杂。
objective-c - 如何用更具体的类型覆盖超类的属性?
场景
我有这样一种情况,其中调用的基类具有在头文件中声明AbstractRequest
的类型的委托属性:id <AbstractRequestDelegate>
抽象委托协议包含一些必需的方法,并且如“抽象”一词所示,theAbstractRequest
和 theAbstractRequestDelegate
都旨在成为子类/扩展。
这方面的一个例子是子类 ConcreteRequest 和扩展协议 ConcreteRequestDelegates,它们都向抽象方法添加了额外的方法。目的是抽象和具体类方法都可以将消息发送到单个分配的委托实例。
在某个时间点,ConcreteRequest 想要调用由 ConcreteRequestDelegate 定义的委托的方法。因为委托的类型是 id ,编译器会给出一个警告,这个方法可能没有被实现。
ConcreteRequest.m:38:警告:属性 'delegate' 需要定义方法 '-delegate' - 使用 @synthesize、@dynamic 或提供方法实现
问题
这个警告是有道理的,因为该属性毕竟是键入的id <AbstractRequestDelegate>
。为了解决这个问题,我想向编译器说明分配给具体实例的委托必须是 type id <ConcreteRequestDelegate>
。这对我来说听起来很合理,所以我在 ConcreteRequest 标头中添加了一个新属性,希望覆盖抽象的:
但这是编译器不同意我的地方,可能有充分的理由。我原以为它会警告用错误的类型覆盖超类的属性,但它只是要求我重新合成这个新属性。我不想去那里,因为这样超类的方法将无法访问相同的委托属性。
问题
有没有办法用添加的类型信息“重新声明”具体子类中的属性?或者你能发现我的想法中的错误吗,因为也许这是一个我直到现在才遇到的相当普遍的问题?
干杯,
EP。
PS 本作品中出现的所有类和协议名称都是虚构的。任何与真实类和协议名称的相似之处,无论是开源的还是专利的,纯属巧合。
logic - 逻辑综合和验证资源
我目前正在研究逻辑综合——给出硬件的高级描述,我希望将其转换为门电路、触发器等。我对这个理论不太熟悉。我搜索了互联网,但大多数都是指在线书店。
有人可以请我参考网上任何好的教程吗?任何有关它的帮助将不胜感激。
ios - Simultaneously generate multiple sine waves into sample buffer for audio unit (iOS)
Given an array (of changing length) of frequencies and amplitudes, can I generate a single audio buffer on a sample by sample basis that includes all the tones in the array? If not, what is the best way to generate multiple tones in a single audio unit? Have each note generate it's own buffer then sum those into an output buffer? Wouldn't that be the same thing as doing it all at once?
Working on an iOS app that generates notes from touches, considering using STK but don't want to have to send note off messages, would rather just generate sinusoidal tones for the notes I'm holding in an array. Each note actually needs to produce two sinusoids, with varying frequency and amplitude. One note may be playing the same frequency as a different note so a note off message at that frequency could cause problems. Eventually I want to manage amplitude (adsr) envelopes for each note outside of the audio unit. I also want response time to be as fast as possible so I'm willing to do some extra work/learning to keep the audio stuff as low level as I can.
I've been working with sine wave single tone generator examples. Tried essentially doubling one of these, something like:
Buffer[frame] = (sin(theta1) + sin(theta2))/2
Incrementing theta1/theta2 by frequency1/frequency2 over sample rate, (I realize this is not the most efficient calling sin() ) but get aliasing effects. I've yet to find an example with multiple frequencies or data sources other than reading audio from file.
Any suggestions/examples? I originally had each note generate its own audio unit, but that gave me too much latency from touch to note sounding (and seems inefficient too). I am newer to this level of programming than I am to digital audio in general, so please be gentle if I'm missing something obvious.
android - 如何在 Android 上合成乐器的声音(钢琴、鼓、吉他等...)
有人可以给我一些关于如何合成乐器声音的指导(钢琴、鼓、吉他等...)
我什至不确定要寻找什么。
谢谢