问题标签 [intel-fpga]
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.
hardware - AHDL 中的 TABLE 是如何工作的?
我在 AHDL 中实现了一个控制单元 (UC),我应该对其进行仿真,看看它是否按照相应的 ASM 图中的定义工作。我用MAX+plus II模拟它,它并没有像我预期的那样工作,但我真的不能说是哪里出了问题,因为我不熟悉 AHDL,更不用说TABLE部分了。
这是我的控制单元:
模拟中有两种我不明白的情况:
1) 当前状态为 S3 且输入为 M1 = 1 且 M2 = 1 时,下一个状态为 S6。我不明白,因为在我看来,如果不先通过 S5,就无法进入 S6。
2) 当前状态为 S0 且输入为 N1 = 1 且 N2 = 1 时,下一个状态在仿真中定义为“12”。好吧,没有这样的状态......
谁能帮我?谢谢。
更新:
1)我必须使用 ADHL 和 MAX+plus II,即使它不是最好的工具组合,因为这是大学的文书工作,我没有编写代码(就像我说的,我只是应该模拟它,我不能改变它)。
vhdl - 为什么 IEEE vhdl 标准库不是 STL?
IEEE vhdl语言参考手册只定义了一组有限的标准包。它没有定义标准类型的功能,例如STD_LOGIC。所以没有标准AND2,INV组件/运算符。
Altera 的 MAX+Plus II 似乎不支持 AND2、INV 组件(如果有,请随时纠正我),但 Xilinx Foundation 支持。
为什么 IEEE vhdl 标准库不能成为 C++ 世界中的 STL 之类的东西?
谢谢。
verilog - 您应该删除 Verilog 或 VHDL 设计中的所有警告吗?为什么或者为什么不?
在(常规)软件中,我曾在使用 gcc 选项 -Wall 显示所有警告的公司工作。然后他们需要被处理。在 Verilog 或 VHDL 中进行非平凡的 FPGA/ASIC 设计时,通常会有很多警告。我应该担心所有这些吗?你有什么具体的技巧可以推荐吗?我的流程主要针对 FPGA(尤其是 Altera 和 Xilinx),但我假设相同的规则也适用于 ASIC 设计,可能更适用于在构建后无法更改设计。
2010 年 4 月 29 日更新:我最初考虑的是综合和 P&R(Place & Route)警告,但模拟警告也是有效的。
c - 需要此语法的帮助:“#define LEDs (char *) 0x0003010”
我正在对来自 Altera 的 Nios II 软核处理器进行编程,下面是其中一个教程中的代码,我设法通过在硬件(DE2 板)上对其进行测试来使代码正常工作,但是,我无法理解代码。
我所知道#define
的是,它要么用于定义常量,要么用于定义宏,但是
- 为什么在上面的代码中,有像
(char *) 0x0003010
,,在#define
? - 为什么是 2 个常量,
Switches
并且LEDs
像一个变量而不是一个常量?
linux - 在 Linux 上编程 VHDL?
任何人都知道使用 Linux 对 VHDL 进行编程和仿真(不管 Xilinx 还是 Altera)的良好环境?
floating-point - Verilog 中的复杂浮点时序逻辑
我正在尝试在 Verilog/SystemVerilog 中编写一个可合成的 3D 光栅化器。现在的光栅化器并不是真正的 3D 光栅化器:它只接收 6 个 32 位浮点数用于顶点位置(vertA_pos_x、vertA_pos_y、vertB_pos_x、vertB_pos_y、vertC_pos_x、vertC_pos_y)和 9 个 8 位整数用于顶点着色(vertA_color_r、vertA_color_g、vertA_color_b , vertB_color_r, vertB_color_g, vertB_color_b, vertC_color_r, vertC_color_g, vertC_color_b)。
位置的范围是 0.0f ~ 1.0f,0.0f 代表屏幕的顶部/左侧,0.5f 代表屏幕的中间,1.0f 代表屏幕的底部/右侧。
光栅工作首先是计算需要多少光栅线。假设帧缓冲区高度为 240 像素,顶点 A 是顶部顶点,B 是左下角,C 是右下角,X 是最底部顶点(B 或 C;这必须计算),光栅线的数量由 给出(vertX_pos_y - vertA_pos_y) / 240
。
光栅化过程的这一部分非常复杂,足以暴露我的疑虑,所以我将停止解释我将如何在这里进行。
现在我想知道的是如何在 Verilog 中实现这种“复杂”的逻辑(它是“复杂的”,因为它是连续的并且需要多个时钟周期,这并不是用硬件设计的最令人愉快的事情描述语言)。
我正在使用 Altera 的 Quartus,所以我主要对 Altera 解决方案感兴趣。
Quartus 附带的浮点运算宏功能都需要一个以上的时钟周期才能完成,因此,为了实现类似的“简单”计算(vertX_pos_y - vertA_pos_y) / 240
,我假设需要一个相当无聊且容易出错的状态机。我最大的期望是有人会告诉我我不需要那个,但如果不是这样,我仍然想知道人们通常如何设计这样的东西。
另请注意,我对 Verilog 和一般硬件设计非常陌生,所以如果我说一些愚蠢的话,我很抱歉。想法?
verilog - 将 Altera M9K 的内容重置为 0(上电值)
再会,
我正在开发一个包含 M9K 块存储器的 Stratix III FPGA,其内容在上电时可以方便地初始化为零。这非常适合我的应用。
有没有办法在不重启/重新刷新/等FPGA的情况下将内容重置为零?在 megawizard 插件管理器中似乎没有这样的选项,我想避免浪费一堆逻辑,这些逻辑只是依次向每个地址写入零......
我环顾四周,没有提到这种机制,但我想我会问一下,以防有人知道一个方便的技巧:]顺便说一句,我正在使用 VHDL,但我应该能够翻译任何 Verilog。
数据表(不包含答案!):http ://www.altera.com/literature/hb/stx3/stx3_siii51004.pdf
在此先感谢
- 托马斯
PS:这是我在这里的第一篇文章,所以如果我违反了任何礼仪,请告诉我:)
embedded - 在 Verilog 中驱动双向线路
这个问题可能不会很好地解释,那是因为我真的不明白我的设计中发生了什么。
我需要使用 I2C 通信总线与相机(Terasic D5M)通信,所以我尝试使用 Verilog 编写一个。我只需要一个大师。在我的逻辑分析仪上,一切看起来都很棒,除了我不断从相机收到 NACK 信号。最初我不知道出了什么问题,所以我把它放在一边。
今晚我尝试使用具有 D5M 模块的 Altera 大学 IP 内核。将其设置为自动初始化后,我观察了分析仪上发生的情况。跟踪看起来与我的 I2C 模块的输出相同,但这是设备注册的 ACK。
我的问题是,我一生都无法弄清楚为什么我没有得到认可。可能是我不允许相机将 sda 线拉低(scl 工作正常),但我不知道为什么会这样。
有没有人有类似的经历或知道我应该去哪里看/发帖/阅读?我会发布一些代码,但如果不是完整的,我不知道它会有多大用处。很抱歉这么含糊,但我真的很迷茫,甚至不知道我应该问什么;我想这是一个类似的效果请求。感谢您的帮助,这是 i2c 模块的输出行的一些代码。
pSCL 是以所需速率运行的时钟,sda_bit 是运行期间 sda 线的值。这是释放和等待确认的部分。这嵌入在我的转换状态中,因此是 else if 的开始。
我认为释放 ena_sda 足以让相机驱动模块。我想我之前把 sda_bit = HIGH 作为测试(我一个月没看过这个)。
我很乐意分享更多代码或显示我的逻辑跟踪,但我不想再把它弄乱了。谢谢阅读。
c - C中的随机数
我正在编写自己的方法来使用 C 生成随机数,如下所示:
pCounter
基本上是指向我正在使用的设备中的寄存器的指针。该寄存器中的数字总是在增加,所以我的想法是只取第一个数字。
在某些时候,返回的数字会大于 9,我不确定问题出在我的代码中还是设备本身。该器件是 Altera DE1 板。
有人可以帮忙吗?
谢谢!
vhdl - 如何在 Quartus II 中分配管脚
我们正在考虑将一些代码移动到 CPLD 或 FPGA 中以使其更快。我以前使用过 Xilinks 和他们的工具套件,但由于某种原因,我们决定这次使用 Altera,所以我正在尝试习惯 Quartus II。
特别是,我正在寻找一种方法来明确地将引脚分配给我正在使用的芯片。在 Xilinx 中,我会编辑网表文件,但在 Quartus 中找不到这样的东西。有一个程序(Assignments => Pin Planner)可以做到这一点,但它有一个笨重的 GUI,我更喜欢在文本编辑器中编辑引脚,所以我的双重问题是
A:如何找到存储引脚分配的文件?它没有列在项目导航器中我的文件下,但我在 Pin Planner 中分配的引脚会在会话之间保留,因此它们必须存储在某个地方。
B:这是一个可怕的想法吗?
IDE 是 Quartus II 10.1 开发套件是 MAX II 开发板语言是 VHDL
编辑:现在,我遇到了我试图通过 USB 与 Dev Kit 接口的问题。我正在它上面制作一个串行数据接收器,并给它一个数据输入引脚。开发套件有一个 USB 接收器,所以我试图将 din 映射到 USB 连接器所在的任何引脚。根据我拥有的文件(rm_maxII-develop_board-rev1.pdf),USB 连接器位于“Board Designation U13”上,但是当我进入 Pin PLanner 并尝试分配它时,没有 PIN_U13。我怀疑这是 pdf 中的错误,而不是 Pin Planner 中的错误,但是因为我以前从未使用过 Altera 产品,所以我很困惑。