Questions tagged «fpga»

现场可编程门阵列(FPGA)是由客户在制造后配置的逻辑芯片,因此称为“现场可编程”。

5
FPGA上的嵌入式Linux
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我对FPGA的经验非常有限(Altera-仅使用视觉设计工具)。 我正在计划一个需要FPGA的新项目,并且可以从运行在同一块板上的实际linux中受益匪浅(主要用于TCP通信以及某些DSP)。 我的问题是,是否有推荐的FPGA,它为此准备了受支持的嵌入式Linux?没有花哨的驱动程序(仅以太网,wifi可能是一个加号,...)。我想象FPGA中会内置一个微控制器(这意味着它将占用大量FPGA,而我需要一个更大的FPGA)。
10 fpga  embedded  linux 

4
总线同步器电路的时序约束
我有一个总线同步器电路,用于跨时钟域传递宽寄存器。 我将提供简化的描述,省略异步重置逻辑。 数据在一个时钟上生成。更新间隔了许多(至少一打)时钟沿: PROCESS (src_clk) BEGIN IF RISING_EDGE(clock) THEN IF computation_done THEN data <= computation; ready_spin <= NOT ready_spin; END IF; END IF; END PROCESS; 用于新鲜数据的控制信号,该信号经过NRZI编码(因此,总线上的有效字对应于控制信号上的转换)。控制信号通过充当同步器的DFF链。 PROCESS (dest_clk) BEGIN IF RISING_EDGE(dest_clk) THEN ready_spin_q3 <= ready_spin_q2; ready_spin_q2 <= ready_spin_q1; ready_spin_q1 <= ready_spin; END IF; END PROCESS; 同步器电路引入了短暂的延迟,这为数据总线稳定提供了足够的时间。数据总线直接采样,没有亚稳态风险: PROCESS (dest_clk) BEGIN IF …
10 fpga  clock  timing  sdc 

4
Microblaze软cpu是否比Cortex M3软cpu更好?
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 就功能而言,Microblaze软cpu是否优于Cortex M3软cpu? 考虑到所有有关基于ARM的处理器的嗡嗡声,我想知道是否应该在我的FPGA上实现ARM处理器,还是应该坚持使用随附的Microblaze。 我应该考虑在性能或功能上有什么重大区别吗?
10 fpga  microblaze 

4
不同复杂度的可编程逻辑IC有什么用?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 可编程逻辑可以在您的窗口小部件中以多种不同的方式实现,从刻录几个门或使用MUX到具有内置微控制器和IO外设的最新FPGA,更不用说ARM的PrimeCell GPIO或其他更具体的示例。在哪些应用中使用了各种级别的可编程逻辑器件复杂性?尽管这些分组似乎在其定义的极端情况下融合在一起,但我认为这是可以接受的列表: PAL / PLA / GAL:可编程逻辑阵列;似乎在Digikey上被列为“嵌入式-PLD”,涵盖了异步10/8 I / O(ATF16V8C)至50MHz,192个宏单元(CY7C341B),并且大多数都是可重新编程的。 CPLD:复杂的可编程逻辑设备;Digikey列出了它们,它们在7.5ns 10 I / O(ATF750C)至233 MHz中提供了428 I / O“ FPGA密度下的CPLD”(CY39100V484B)。 FPGA:现场可编程门阵列;提供58种I / O(XC2064)至1023种I / O BGA野兽(EP1S80F1508C7N)。 带有硬MCU的FPGA:这是将MCU物理布局在FPGA IC中而不进行仿真的时候。 维基百科报价: FPGA和CPLD之间的区别在于,FPGA在内部基于查找表(LUT),而CPLD构成具有逻辑门的逻辑功能(例如,乘积之和)。CPLD用于更简单的设计,而FPGA用于更复杂的设计。通常,CPLD是广泛组合逻辑应用程序的不错选择,而FPGA更适合大型状态机(即微处理器)。 这并不能解释使用233 MHz,400 I / O CPLD和类似FPGA的区别。或在192个宏单元PLD和相当的CPLD之间。我无法根据可靠的准则来缩小设计范围。请注意,我目前没有特定的应用程序,但经常想知道“我将用什么来做呢?” 我已经收到了极好的建议异地关于具体要求,但还是觉得这个问题可以从一些例子,说明了可编程逻辑器件的一个家庭偏好好处,当另一个可能出现同样适用或更为合适。

5
什么是XMOS系列?
好的,所以最近我一直在看到XMOS这个名字出现在地方。我浏览了他们的网站并在线搜索,但是我不太清楚这是什么吗?那是什么 这似乎是微控制器和FPGA之间的交叉点吗? 我还浏览了他们的站点,但看不到我所能理解的任何东西(仅仅是示例设计和其他参考文档),因为它们是XMOS以及它与其他微控制器系列的不同之处。

4
FPGA-DIY编程
我已经为微控制器编程了几年了,上完数字设计课程后,我才发现FPGA。在对不同的FPGA,开发板等进行了一些研究之后,我仍然不愿购买任何产品,因为我不知道如何制作自己的最终“产品”版本。我已经将PIC,SAM,AVR等放在定制PCB上没有问题,所以我并不担心-我的主要担心是在没有制造商板的情况下对FPGA进行编程。 我的具体问题:如果我将Quartus,Vivado,iCEcube等生成的位图文件写入地址0开始的SPI闪存芯片(例如,通过FT2232H),并将FPGA连接至FPGA的SPI引脚(正确设置了MODE配置)? 对于部分假设,我深表歉意。我相当确定这是莱迪思的Diamond程序员所做的一切,但是我想知道这种方法是否适用于不同制造商的FPGA,或者说Quartus在编写时是否在存储器中添加了额外的“窗口修饰”或标头。 让我知道我是否可以做些什么来改善/阐明这个问题,或者我是否在FPGA编程过程中遗漏了重点。谢谢!
9 fpga  spi  programming 

2
VHDL中的矩阵向​​量乘法函数是否已并行化?
我有以下VHDL函数,该函数将给定的mxn矩阵a乘以nx1向量b: function matrix_multiply_by_vector(a: integer_matrix; b: integer_vector; m: integer; n: integer) return integer_vector is variable c : integer_vector(m-1 downto 0) := (others => 0); begin for i in 0 to m-1 loop for j in 0 to n-1 loop c(i) := c(i) + (a(i,j) * b(j)); end loop; end loop; return …
9 fpga  vhdl  matrix 

2
2-ff同步器如何确保正确的同步?
使用2-ff同步器已经成为信号跨越时钟边界的标准。而且有很多纸/图说明了这种机制,例如: 似乎BCLK只能样品的脉冲ADAT一次(在第二个上升沿BCLK),这将导致对输出的亚稳态bq1_dat。如何在下一个有效时钟沿将bq1_dat采样为“高”? 除了我的问题之外,我还想添加一些我认为能使信号安全通过另一个时钟域的信号(假设2-FF足以满足MTBF要求)。如果有任何错误,请纠正我。 ps:亚稳状态不会显示“四处游荡”的波形,而是既不是“ 1”也不是“ 0”的电平。下图显示了一个亚稳态输出的示例。 原始数据来自WJ Dally的EE108A的讲义,第13讲:亚稳性和同步失败(当好的触发器变坏时会出现)。

2
是否可以在以采样频率为时钟源的FPGA中创建IIR滤波器?
这个问题是关于使用非常具体的标准在带有DSP Slice的FPGA中实现IIR滤波器的。 假设您要制作的滤波器没有正向抽头,只有1个反向抽头,其公式如下: ÿ[ n ] = y[ Ñ - 1 ] ⋅ b 1 + X [ Ñ ]y[n]=y[n−1]⋅b1+x[n]y[n] = y[n-1] \cdot b1 + x[n] (见图片) 以Xilinx的DSP48A1芯片为例-大多数硬IP DSP芯片都是相似的。 假设您有每个时钟以1个样本输入的模拟数据。我想设计一个在采样时钟上同步运行的IIR滤波器。 问题在于,为了以最大速率运行DSP Slice,您不能在同一周期上进行乘加运算。这些组件之间必须有一个管道寄存器。 因此,如果每个时钟有1个新样本,则每个时钟将需要产生1个输出。但是,在此设计中产生新的时钟之前,需要先前的输出2个时钟。 显而易见的解决方案是要么以双时钟速率处理数据,要么禁用流水线寄存器,以便您可以在同一周期内进行乘法和加法。 不幸的是,如果说您以全流水线DSP Slice的最大时钟速率进行采样,那么这两种解决方案都不可行。还有其他方法可以构建吗? (如果您可以使用任意数量的DSP Slice设计可以以一半采样率运行的IIR滤波器,则可加分) 目标是在Xilinx Artix FPGA中为1 GSPS ADC运行补偿滤波器。当完全流水线化时,他们的DSP Slice可以运行在500 MHz以上。如果每个时钟有1个样本的解决方案,我想尝试扩展每个时钟2个样本的解决方案。使用FIR滤波器,这一切都非常容易。
9 fpga  filter  dsp  iir 

2
通过FPGA进行PIC编程
我想知道是否有一种通过FPGA卡首次编程PIC(以Flash写入)的方法。 PIC已经焊接到FPGA了,我无法将其移除。PIC上不存在引导程序。因此,我需要使用引导加载程序以USART / SPI / I2C模式对其进行编程,以便它可以从FPGA接收数据。 我知道通常我必须拆焊,将其连接到PICKit之类的硬件程序员,并使用MPLAB之类的计算机上的软件对其进行编程,但是我负担不起。 我可以使用MPLAB(一个.hex文件)生成引导加载程序,但是如何将其传输到FPGA,然后通过FPGA引脚传输到PIC? 使用的PIC是Microchip PIC12F1822。

2
VHDL:计数位时接收模块随机失败
背景 这是一个个人项目;考虑到将FPGA连接到N64,FPGA接收的字节值然后通过UART发送到我的计算机。它实际上运行得很好!不幸的是,在随机时间,设备将发生故障,然后恢复。通过调试,我设法找到了问题,但是由于无法使用VHDL,我对如何解决它感到困惑。 我一直在与VHDL玩弄几天,而我可能无法解决这个问题。 问题 我有一个示波器,它测量进入FPGA的N64信号,另一个通道连接到FPGA的输出。我也有数字引脚记录计数器值。 本质上,N64发送9个数据位,包括STOP位。计数器对接收到的数据位进行计数,当我达到9位时,FPGA开始通过UART发送。 这是正确的行为: FPGA是蓝色波形,橙色波形是N64的输入。在接收期间,我的FPGA“回音”输入的信号以进行调试。FPGA计数到9后,它开始通过UART传输数据。请注意,N64完成后,数字引脚计数为9,FPGA输出立即变为低电平。 这是一个失败的例子: 请注意,计数器会跳过位2和7!FPGA到达末尾,等待N64的下一个起始位,但是什么也没有。因此,FPGA超时并恢复。 这是N64接收模块的VHDL。它包含计数器:s_bitCount。 library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity N64RX is port( N64RXD : in STD_LOGIC; --Data input clk25 : in STD_LOGIC; clr : in STD_LOGIC; tdre : in STD_LOGIC; --detects when UART is ready transmit : out STD_LOGIC; --Signal to …
9 fpga  vhdl  protocol 

1
处于SPI模式的SD卡是否尊重片选/从片选择?似乎正在我的应用程序中重置
我有一个具有微控制器(NXP LPC1343)的应用程序,该微控制器通过16位SPI 连接到FPGA。还有一个SD卡使用相同的SPI端口(MISO / MOSI),但具有不同的CS / SS引脚(根据SPI规范,它们均为低电平有效)。我需要做的一件事就是使用FAT32将FPGA中的数据写入SD卡上的文件中,这就是微控制器的工作。该微控制器正在运行FatFS,我已经可以独立可靠地工作。 由于微控制器只有少量的RAM,因此一次只能缓存少量的数据。因此,微控制器必须从FPGA读取缓冲区,将SPI模式更改为8位,然后将该数据写入FATFS。回想一下,为了将SD卡配置为SPI模式,必须在SPI总线以400 kHz运行时发送命令,并且必须进行一定的等待。因此,我只想执行一次初始化。 但是,即使在将SD卡上的CS保持高电平的同时在FPGA上执行事务,似乎也会使SD卡进入怪异状态,从而需要再次进行初始化。这当然是不希望的,因为初始化可能要花费几毫秒,以便仅写入4 kB左右的数据(同样受微型计算机的RAM容量限制)。由于我需要尽快写入几兆字节,因此性能从大约500 kB / s降低到不到100 kB / s。 我知道SD卡在技术上并不完全兼容SPI,但是如何解决此问题?
9 fpga  spi  sd  nxp 

1
用合成的ROM内核模拟一个简单的测试台
我对FPGA领域是一个全新的领域,并认为我将从一个非常简单的项目开始:一个4位7段解码器。我纯粹用VHDL编写的第一个版本(基本上是单个组合select,不需要时钟),并且似乎可以使用,但我也想尝试使用Xilinx ISE中的“ IP内核”功能。 因此,现在我正在使用“ ISE Project Explorer” GUI,并使用ROM内核创建了一个新项目。生成的VHDL代码为: LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- synthesis translate_off LIBRARY XilinxCoreLib; -- synthesis translate_on ENTITY SSROM IS PORT ( clka : IN STD_LOGIC; addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END SSROM; ARCHITECTURE SSROM_a OF SSROM IS -- …

4
将80年代风格的计算机卡带连接到FPGA
我正在FPGA上重新实现一台1980年代的Microbee计算机(请参阅此处),并试图弄清楚如何执行卡式盒端口。这是原始Microbee盒式磁带接口的示意图: (来源:toptensoftware.com) 我也在技术手册中找到了对此描述: 卡带数据输出仅由一个RC网络组成,该网络接收来自DB1(PIO的引脚28)的信号。将该信号衰减然后解耦,然后再将其发送到盒式录音机的MIC输入。该信号出现在5针DIN插座的3针上。 盒带数据输入电路稍微复杂一些。来自DIN插座的引脚5的输入首先传递到衰减器-解耦器。紧随其后的是一个CA3140运算放大器,可以在信号传递到PIO DBO的引脚27之前对各种输入电平进行平方运算。运放的反相和同相输入两端的两个二极管会截取大于任一方向上二极管正向电压的任何输入信号。CMOS运算放大器需要47pF电容器进行预补偿。 我的问题: 描述中的“去耦”是什么意思? 如果将同一电路连接到Xilinx Spartan 6 FPGA上的两个I / O引脚(通过Nexys3上的PMod连接器),是否可以工作,如果不通过,是否可以使其工作? 首次尝试,基于答案中的注释,但输出电阻不应串联。 出于上下文和教学原因,我将其保留在此处,请参见下一个示意图 MicrobeeSchematic2 http://www.toptensoftware.com/fpgabee/MicrobeeCassettePortSchematic2.png 新问题: 比较器的极性是否正确? 对于MCP6546,Vss是否接地并且Vdd是否为3.3V? 我不确定在原始电路的磁带输入两端如何制作“点状”电阻。 合并有关比较器输出为漏极开路的反馈: MicrobeeSchematic3 http://www.toptensoftware.com/fpgabee/MicrobeeCassettePortSchematic3.png 我可以在MCP6546上使用哪些替代品,而我在澳大利亚的零售商店中找不到。我可以得到LM311或LM393,从我的判断中可以看出它们是相似的。这些效果会一样好吗?

2
使用JTAG编程多个FPGA
我有一个JTAG链,可连接使用ISE iMPACT编程的4个Spartan 6 FPGA。该软件可以成功地以任何顺序连续编程4个FPGA的任何严格子集。但是,当我尝试对所有四个 FPGA 进行编程时,最后一个FPGA的DONE引脚不会变高,并且编程失败。 是什么导致这种奇怪的行为? 笔记: 对三个FPGA进行编程后,尽管INIT_B引脚为高电平,第四个FPGA的状态寄存器的INIT_B位为0。在对第三个FPGA进行编程之前,该位为1。这表明第四个FPGA已锁定。 使用SelectMap进行编程时,我可以毫无问题地对所有四个FPGA进行编程。 当我使用SelectMap对三个FPGA进行编程时,仍然不能使用JTAG对第四个FPGA进行编程。 四个完成的引脚中的每一个都通过4.7K欧姆电阻上拉至3V3,然后绑在一起。 我尝试过的事情: 从链中断开一个FPGA的连接,可以对其余3个FPGA进行编程。 将最后一个FPGA的4.7K Ohm上拉电阻换成330 Ohm电阻并不能解决问题。
9 fpga  jtag  spartan 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.