问题标签 [spartan]

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 回答
193 浏览

vhdl - UCF 文件中的 PERIOD 关键字是否指定或通知

我的开发板(Papilio One 500k)有一个 32 MHz 的板载振荡器,连接到P89.

我在下载的默认约束 (UCF) 文件中看到,它有一行:

现在,为什么这里将周期定义为 31.25 ns。

如果板载振荡器是设定频率,为什么我可以在这里设置周期?

我的想法是,这个声明是为了通知编译器板载振荡器的周期,而不是指定周期是什么。

0 投票
1 回答
68 浏览

keyboard - Baysis2 键盘端口总是高

我正在尝试使用baysis2 FPGA和verilog创建一个密码系统,以验证通过键盘输入的密码。我需要确保我的键盘工作正常,因为它似乎有点小故障。有人告诉我,确保我的键盘向板子发送数据的最佳方法是在我按下按钮时检查 ps2d 和 ps2c 是否为高电平,这是有道理的。问题是在测试中,我绑定 ps2d 和 ps2c 的两个 LED 总是逻辑高,即使键盘断开连接!这是 verilog/Xilinx ISE 的某些功能还是我的电路板有坏端口?

以下是我的 Verilog 代码。

使用以下约束文件

0 投票
1 回答
553 浏览

verilog - 根据输入更改计数器目标

我正在做一个数字设计课程的项目,我必须在我的项目中使用频率来演奏音符。我必须说我在verilog方面相当缺乏经验(必须在项目中使用verilog)。我对该主题进行了一些研究,并发现(此处)以下代码片段:

在这段代码中,时钟为 25MHz,输出频率为 440,我想做的是根据用户输入改变输出频率,所以我假设我只需要改变计数器计数的值。我怎样才能巧妙地将它添加到代码中以便它应该工作?

0 投票
1 回答
652 浏览

verilog - Baysis2 Verilog - 7 段显示的第一位数字不起作用

我正在尝试使用 verilog 在我的 baysis2 FGPA 上创建一个简单的 4 位密码系统。我想使用 7 段显示器来显示输入的数字(将使用键盘输入)。现在我只是在测试以确保输入正确的数字。问题是,七段显示器的第一个数字不亮,而其他所有数字都亮。我已经在多个板上进行了尝试,并且所有其他由同一根电线启用的数字都很好。为什么会这样?

ucf

0 投票
1 回答
302 浏览

vhdl - 次优时序实现警告 - F7 多路复用器

作为我尝试对 DVI Ch7301c 进行编程的一部分,我正在尝试创建一个用于测试的 I2C 总线。

我正在向它提供测试数据,但是,当我尝试传输十六进制 77 的数据值时,它会引发以下警告:

缩小范围后,似乎在 case 语句中抛出了它,但仅在发送值 hex 77 时。此外,我可以在 case 语句的其他地方发送值 hex 77,而不是在 when counter <= 3 此警告表示什么,以及为什么它似乎只打击了十六进制 77 的明显随机值。

我的代码如下 - 我没有添加 I2C_Master 模块的代码,因为它似乎不对错误负责。

非常感谢!

大卫

0 投票
1 回答
977 浏览

vhdl - VHDL:选择器(字符串类型的常量'')是一个不受约束的数组

我从http://www.intesc.mx/soporte下载了一个 VHDL LCD 库,检查语法时出现以下错误:

我在 (->) 选择的行中收到错误:

我知道 VHDL 的基础知识,但我不知道如何调试这些类型的错误。

谢谢您的帮助。

0 投票
3 回答
7219 浏览

buffer - 使用 BUFG 驱动时钟负载

我正在尝试处理输出到 DVI 芯片的像素数据。使用各种时钟频率是因为 DVI 芯片寄存器使用 I2C 进行编程(因此需要时钟 < 500 KHz) - 来自时钟分频器。

DVI 芯片需要一个 40 MHz 差分像素时钟,然而,DVI 需要一个周期两次显示半字节,因此需要另外一个 80 MHz 时钟来在每个半周期将像素的每一半推到数据线上,这些是来自 DCM。

这导致了各种各样的问题。我试图只使用双像素时钟速率来交换每一半像素,但是我得到了错误:

This design contains a global buffer instance, <out2_bufg>, driving the net, <pxlclk_p_int>, that is driving the following (first 30) non-clock load pins.

所以我在 DCM 的输出和使用信号的组件之间添加了一个 BUFG 元素 - 但它没有改变任何东西,而是现在在 BUFG 的输入和输出上都抛出了两次错误。

  • 我该如何解决这个问题 - 鉴于我刚刚添加了一个 BUFG 但它不喜欢它!

我的代码如下;我试图删掉那些与时钟无关但它仍然很长的不相关的东西!

编辑1:我添加了块,当添加到系统中时,导致错误(以前不存在)它在第二个代码块中!我目前正在研究关于差分信号的其他建议,完成后将再次编辑!

非常感谢,

大卫

DVI_MUX当我将此块添加到系统时,错误被抛出以前没有的地方

0 投票
2 回答
1639 浏览

vhdl - 在 VHDL 中创建低时钟频率的替代方法

过去我问过一个关于复位的问题,以及如何将高时钟频率划分为一系列较低的时钟方波频率,其中每个输出都是彼此的谐波,例如第一个输出是 10 Hz,第二个是 20 Hz等等

我收到了几个非常有用的答案,推荐了使用时钟启用引脚创建较低频率的惯例。

从那以后我想到了另一种选择;使用一个不断递增的位数,并将该数的最后 x 位作为时钟输出,其中 x 是输出数。

它对我来说是综合的——但我很想知道——因为我从未在网上或 SO 上的任何地方看到过它,我是否遗漏了一些意味着它实际上是一个糟糕的想法的东西,而我只是在为以后制造问题?

我知道对此的限制是我只能产生输入频率除以 2 的幂的频率,所以大多数时候它只会接近所需的输出频率(但仍然是正确的命令)。这个限制是不推荐的唯一原因吗?

非常感谢!

大卫

0 投票
0 回答
601 浏览

memory - SP605 Spartan 6 DDR3 寻址

下面的帖子很长,但是由于我在一个多月以来一直无法让 SP605 板与 DDR3 正确交互,希望这对与我发现自己处于相同情况的其他人有用。我很确定它是一个简单的配置或概念错误,但我很乐意尽快解决这个问题。

=== 场景 ===

我创建了一个 USB-UART 接口来与 FPGA 通信并控制 DDR3。使用 ISE 中的 IP 生成器,我生成了一个 MIG 包装器,然后我设计了内存接口控制器。但是,我参考了 ug388 和 ug416 手册,但我无法让 DDR3 按预期运行。

=== 问题陈述 ===

玩弄写入和读取命令的突发长度,我能够从 DDR3 取回数据,但寻址方案似乎不正确,因为数据在地址 0 和 1、2 和 3、4 和 5 中重复,等等。此外,例如,每当我写入地址 0 时,都没有任何变化。然后,当我写入地址 1 时,地址 0 和 1 都会更新为我刚刚发送的数据值。由于这种耦合效应,我似乎“丢失”了一半的内存空间。

=== DDR3 IP 配置 ===

下面列出了使用 IP 生成器的 DDR3 设置(考虑到 SP605 板场景)。总之,我激活了 DDR3 Bank 3 并将 Port0 配置为 32 位双向。

内存选择:

  • 启用 AXI 接口:未选中

  • 使用扩展 MCB 性能范围:未选中

  • bank 3 的内存类型:DDR3 SDRAM

  • bank 1 的内存类型:无

C3 选项 – DDR3 SDRAM

  • 频率:400兆赫

  • 内存部分:MTJ41J64M16XX-187E

C3 的内存选项 – DDR3 SDRAM

  • 输出驱动阻抗控制:RZQ/6

  • RTT(标称)- ODT:RZQ/4

  • 自动自刷新:启用

C3 的端口配置 – DDR3 SDRAM

  • 两个 32 位双向端口和四个 32 位单向端口

  • 端口 0:已检查

  • 端口 1:未选中

  • 端口 2:未选中

  • 端口 3:未选中

  • 端口 4:未选中

  • 端口 5:未选中

  • 内存地址映射选择:row-bank-column

C3 的 FPGA 选项 – DDR3 SDRAM

  • 存储器接口引脚端接:校准的输入端接

  • 选择 RZQ 引脚位置:R7

  • 选择 ZIO 引脚位置:W4

  • 内存控制器的调试信号:禁用

  • 系统时钟:差分

=== 数据结构 ===

在 Matlab 中,我发送了一个 64 位命令,该命令应该根据该命令中提供的地址和数据写入或读取 DDR3。

在ug388中,可以提取以下内容:

第 20 页:地址为 26 位宽。

第 26-27 页:命令数据结构。

  • pX_cmd_addr[29:0]:30 位地址,但最后两位应 = “00”,因为每个字(32 位)由 4 个字节组成。

  • pX_cmd_bl[5:0]:通过将此信号设置为 0 来获得 1 的突发长度。

  • pX_cmd_instr[2:0]:唯一使用的命令指令是 write=”000” 和 read=”001”。

第 28 页:编写数据结构。

  • pX_wr_mask[PX_MASKSIZE-1:0]:4 位掩码设置为“0000”,以便始终将所有 4 个字节写入内存。

=== 信号分配 ===

使用所有这些信息,我以下列方式分配我的信号:

=== 结论 ===

根据配置,有谁知道我的控制器的预期行为应该是什么?如果需要任何其他信息来澄清,请告诉我。

非常感谢,布鲁诺。

0 投票
2 回答
955 浏览

vhdl - 为什么我用于生成 VGA 信号的 VHDL 代码不起作用

我一直在疯狂地试图让它工作,但在过去的 6 个小时里没有任何事情发生并且仍然没有解决它:/

所以这是顶级模块

时钟分频器

VGA信号产生模块

所以告诉我你对代码有什么问题的想法