问题标签 [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.

0 投票
1 回答
571 浏览

audio - 声音加法合成 - 任何谐波幅度

我有用 C# 编写的音乐合成的工作解决方案。现在,如果基于幅度谱的收集来实施另一种仪器,我将面临问题。我找到了这个网站,我在哪里可以看到所有和声部分 (1-10) http://elektronicka-hudba.telotone.cz/clanky/metody-zvukove-syntezy/用于钢琴、人声、电子管、小提琴,但我会喜欢添加更多不同的乐器,例如鼓、吉他等。我在互联网上浏览了数百页,但没有成功。你知道任何其他乐器的谐波幅度吗?

编辑:

没有人知道乐器的任何谐波(幅度谱 1-10)吗?

非常感谢

赫米扎克

0 投票
3 回答
17636 浏览

verilog - Basys2 上的七段复用

这是我的第一篇文章,所以我希望我做得正确。我试图在 BASYS2 板上的四位七段显示器上输出“4 3 2 1”。我已检查以确保 0 启用信号并且我已正确映射端口。我相信错误在我的多路复用逻辑中,因为我只能显示一个数字。我是 Verilog 的新手(我习惯于 C),如果有任何建议,我将不胜感激。谢谢

0 投票
2 回答
5745 浏览

verilog - 始终@(posedge clk) 中的事件控制

想知道 always 块中事件控制语句的行为:

在事件信号到来之前,进程会“卡住”,还是会在每次 clk 边缘到来时重新启动?

这也是可合成的(Quartus II 说是,但还没有模拟......)?这是一个好的做法还是有其他更好的方法来解决这个问题?

0 投票
2 回答
1925 浏览

process - VHDL移位运算符?

我仍在尝试习惯 VHDL 的一些怪癖,但我遇到了一些问题。首先,我知道像 rol、ror、ssl、srl 等移位运算符是不可合成的。本实验室的目的是使用黄金模型来检查测试台中同一事物的可综合版本。

现在,该程序的目的是将温度计代码转换为 3 位二进制数。因此,换句话说,温度计代码“00000001”=“001”、“00000011”=“010”、“00000111”=“011”等。我基本上是在尝试从右边数出字符串中 1 的数量向左。不会出现在 1 字符串之间放置“0”的情况,因此向量“00011101”是无效的并且永远不会出现。

我设计了一个不可综合(到目前为止,不可编译)的算法,我无法弄清楚如何开始工作。基本上,这个想法是读取温度计代码,将其右移并增加一个计数器,直到温度计代码等于 0,然后将计数器值分配给 3 位 std_logic_vector。下面是我到目前为止所做的代码。

0 投票
1 回答
1909 浏览

vhdl - HDL中的组合划分

如果我要实现纯组合的 64 位除法,我正在尝试想出一种方法来估计门数。

我无法让我的综合工具生成组合的 64 位/64 位整数除法。

0 投票
4 回答
7778 浏览

verilog - Verilog 非阻塞赋值序列

说出以下代码部分(同一块):

变量 A 总是被赋值为 2 吗?还是会有竞争条件并分配1或2?

我对非阻塞分配的理解是,由硬件在将来分配变量 A ,因此它可能是随机结果。然而,这是不直观的。模拟显示 2 总是被分配,但我想知道这是否绝对是硬件综合的情况。

0 投票
1 回答
491 浏览

vhdl - HDL 合成抱怨灵敏度列表中缺少信号

您好我有这个简单的 VHDL 过程(从 MyHDL 代码生成):

原始 MyHDL 代码:

在模拟中它工作得很好(ISIM 和 MyHDL 模拟器),但是当我尝试将它合成到 Spartan 6 中时,它会给出以下警告: clken 应该在进程的敏感列表中 sclidlevalue 应该在进程的敏感列表中

据我了解,它以某种方式推断出这个过程应该对 clkEn 和 sclIdleValue 信号敏感。但这当然不是我的本意。我希望它仅在延迟时钟更改其状态时更改输出,而不是在 clkEn 或 sclIdleValue 更改其各自状态时更改输出。

这是在 Spartan 6 架构中无法完成的事情吗?或者我应该以其他方式描述流程以实现我的预期行为?

0 投票
1 回答
5672 浏览

vhdl - 摆脱保持时间违规(Xilinx HDL)

我正在 FPGA 中实现 DSO 控制器,但我遇到了太多违反保持时间的问题(到目前为止,最好的 P&R 结果是 3 个保持时间错误,大约在 -2ns slack 左右)。

我的问题的核心是我有 FIFO 缓冲区,输入来自 ADC 采样抽取器,然后输出到同步 FT245 (60MHz)。输入抽取器可以设置为以 2 的幂次方抽取(例如 1、2、4、8、16...),这也分频 ADC 样本的时钟频率(150MHz)。

我现在的方法是在捕获数据时提供分频(或直接,如果抽取器比率为 0)时钟频率来缓冲,然后当我将样本推送到 PC 时,我从 FT245 切换到提供 60MHz 时钟。在模拟中它工作得很好,但问题在于布局和布线,该路由器会吐出这个错误:

然后它会持续运行 10-15 分钟,直到它给我计时报告,通知我满足所有设置时间限制,并且 150MHz 时钟(60MHz 时钟正常)有 3 次保持时间违规。

我已经读过这个问题可能是使用门控时钟,即 FPGA 无法正确分配时钟,但我尝试使用方法而不是 FIFO 的门控时钟,我将 150MHz 时钟直接连接到 FIFO,并且我正在使用 dataReady 门控 FIFO 中的数据(它实际上最终是与以前门控时钟相同的信号)然后我得到了比现在更多(50-60)的保持时间违规。

多时钟 FIFO 是否有一些已知的好方法?不只是两个(即使在 Xilinx ISE 的示例中也很多)。还是在 FPGA 中抽取 ADC 样本的想法行不通?

目标 FPGA 是 Spartan 6 LX25 速度等级 -2(不幸的是我无法获得 -3 速度等级)。

这是它给我的松弛示例:

提到的来源是信号(它给我的所有违规行为都是),它不会经常更改,它实际上是由 GUI 控制的,所以我不知道它怎么可能有保持时间违规。它是从抽取器比率到触发缓冲区(或其他违规情况下的我的 FIFO 缓冲区)的路径。

基本上我的问题是我是否应该关心这些违规行为?

因为在改变抽取器的比率之后,在我真正开始在触发器中使用抽取器的结果之前可能有数千个时钟周期。

我知道路由器不知道我多久更改一次异步信号(它是异步的,因为我是从 60MHz 时钟域设置它)以及使用某些模块的结果需要多长时间。问题是我不知道它是否在完成 PAR 后向我显示这 3 项违规是否是最终的,是否没有其他违规只是被这 3 项违规所掩盖?

是否可以发布 PAR 模拟验证它是否可以在船上工作?我会在船上试一试,但我必须等待 2 周才能完成 BGA 焊接,而我只剩下 4 周的时间来完成论文,所以我想确保我的设计能够奏效。

0 投票
2 回答
2537 浏览

vhdl - VHDL 综合 - FF/锁存常数值

我正在尝试合成我编写的 vhdl 模块。

代码如下:

我在尝试合成时遇到的问题是:

WARNING:Xst:1293 - FF/Latch 在 block 中有一个常数值 0。此 FF/Latch 将在优化过程中被修整。WARNING:Xst:1896 - 由于其他 FF/Latch 微调,FF/Latch 在 block 中有一个常数值 0。此 FF/Latch 将在优化过程中被修整。WARNING:Xst:1896 - 由于其他 FF/Latch 微调,FF/Latch 在 block 中有一个常数值 0。此 FF/Latch 将在优化过程中被修整。

修剪一直到 .

我不明白的是 clkCount 变量是一个整数,最多递增到 6,然后重置为 0。

这些警告是我可以忽略的吗?

这个模块是我正在开发的一个更大系统的一部分,当我合成更大的系统时,我得到了很多

找到信号的 1 位锁存器

所以我想做的是在修复上层模块之前尽可能多地消除下层模块中的警告。

任何帮助都会很棒。谢谢

PS - 我正在使用 Xilinx spartan 6 sp605 评估套件板和 Project Navigator。

0 投票
1 回答
190 浏览

vhdl - VHDL - 为什么这个信号永远不会被驱动为低电平?

我希望你能帮帮我!

我正在为 Spartan 3E 原型板编写一个程序,它将计算正弦输入信号的频率。由于我选择使用的 ADC 存在问题,我决定在内部生成这个信号,模拟来自 ADC 的输入。我现在的问题在于负责从模拟 ADC 中检索数据的模块。

整个系统按预期进行模拟,但是在合成时会生成大量警告。这些都追溯到我的芯片选择信号,它应该被驱动到大约 16KHz 的低电平。奇怪的是,综合工具没有产生警告,只是芯片选择一直很高这一事实的信息。

这是合成时生成的信息:

这是有问题的模块:

该模块使用 16MHz 时钟从模拟 ADC 中获取数据,方法是生成一个 8MHz 的数据时钟。时钟分频信号是一个将时钟速度降低到 16KHz 的计数器,它在每次计数结束时将芯片选择驱动为低电平,然后在为一个样本检索到所有数据后将其驱动为高电平。

根据综合工具,CS 永远不会被驱动为低电平,因此会被修整,这意味着系统的其余部分都没有功能。该模块无法自行正确合成,但可以进行模拟。

对此问题的任何意见将不胜感激。

谢谢