fpga

PLD/FPGA开发环境

一世执手 提交于 2019-11-28 02:35:41
http://blog.pfan.cn/378121200 这类软件都是由PLD/FPGA芯片厂家提供,基本都可以完成所有的设计输入(原理图或HDL),仿真,综合,布线,下载等工作。 Altera公司上一代的PLD开发软件,使用者众多。目前Altera已经停止开发MaxplusII,而转向QuartusII软件平台 MaxplusII学习资料下载 MaxplusII Baseline Altera公司的免费PLD开发软件,界面与标准版的MaxplusII完全一样,但需要通过使用MAX+PLUSII Advanced Synthsis插件才能支持VHDL/Verilog。 该支持MAX7000/3000和部分FLEX/ACEX芯片(如1K30,6016等),共47.1M 用网卡号申请license 如没有网卡,可以 用硬盘号申请 ,license会发到你的电子信箱,有效期为6个月,到期后可再申请 MaxplusII E+MAX Altera公司的免费PLD开发软件,界面与标准版的MaxplusII完全一样,只支持MAX7000和MAX3000系列器件,本身支持不复杂的VHDL和Verilog综合,软件较小,共26.8M 用网卡号申请license ,如没有网卡,可以 用硬盘号申请 ,其他同上 Altera公司新一代PLD开发软件,适合大规模FPGA的开发

异步FIFO结构及FPGA设计 ---跨时钟域设计

心已入冬 提交于 2019-11-28 02:34:21
http://hi.baidu.com/hieda/blog/item/e8f8752465afb337c895593c.html 异步FIFO 结构及FPGA 设计 吴自信,张嗣忠. 单片机及嵌入式系统应用,2000 摘要 :首先介绍异步FIFO的概念、应用及其结构,然后分析实现异步FIFO的难点问题及其解决办法;在传统设计的基础上提出一种新颖的电路结构并对其进行综合仿真和FPGA实现。 1、异步FIFO介绍 在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步 FIFO(First In First Out)是解决这个问题一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面, 异步FIFO得到了广泛的应用。 异步FIFO是一种先进先出的电路,使用在需要产时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,由于时钟之间周期和相位完全独立,因而数据的丢失概率不为零。如何设计一个高可靠性、高速的异步FIFO电路便成为一个难点。本文介绍解决这一问题的一种方法。 由图1可以看出:整个系统分为两个完全独立的时钟域——读时钟域和写时间域;FIFO的存储介质为一块双端口RAM,可以同时进行读写操作。在写时钟域部分

FPGA管脚分配需要考虑的因素

为君一笑 提交于 2019-11-28 02:34:19
http://hi.baidu.com/hieda/blog/item/5457fd01f284edd2277fb504.html 在芯片的研发环节,FPGA验证是其中的重要的组成部分,如何有效的利用 FPGA 的资源,管脚分配也是必须考虑的一个重要问题。一般较好的方法是在综合过程中通过时序的一些约束让对应的工具自动分配,但是从研发的时间段上来考虑这种方法往往是不可取的,RTL 验证与验证板设计必须是同步进行的,在验证代码出来时验证的单板也必须设计完毕,也就是管脚的分配也必须在设计代码出来之前完成。所以,管脚的分配更多的将是依赖人,而非工具,这个时候就更需要考虑各方面的因素。 综合起来主要考虑以下的几个方面: 1、 FPGA所承载逻辑的信号流向。 IC 验证中所选用的 FPGA一般逻辑容量都非常大,外部的管脚数量也相当的丰富,这个时候就必须考虑到 PCB 设计时的布线的难度,如果管脚的分配不合理,那么有可能在PCB 设计时出现大量的交叉的信号线,这给布线带来很大的困难,甚至走不通,或者是即便是布线走通了,也有可能由于外部的延时过大而不满足时序方面的要求。所以在管脚分配前对 FPGA工作的环境要相当的熟悉,要对其中的信号来自哪里去向何方非常的清楚,这就按照连线最短的原则将对应的信号分配到与外部器件连线最近的 BANK 中。 2、 掌握 FPGA 内部 BANK 的分配的情况。 现在

How to initialize contents of inferred Block RAM (BRAM) in Verilog

霸气de小男生 提交于 2019-11-28 00:24:58
问题 I am having trouble initializing the contents of an inferred ram in Verilog. The code for the ram is as below: module ram( input clock, // System clock input we, // When high RAM sets data in input lines to given address input [13:0] data_in, // Data lines to write to memory input [10:0] addr_in, // Address lines for saving data to memory input [10:0] addr_out, // Address for reading from ram output reg data_out // Data out ); reg [13:0] ram[2047:0]; // Initialize RAM from file // WHAT SHOULD

Error adding std_logic_vectors

蓝咒 提交于 2019-11-27 20:09:38
I wanna have a simple module that adds two std_logic_vectors. However, when using the code below with the + operator it does not synthesize. library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; entity add_module is port( pr_in1 : in std_logic_vector(31 downto 0); pr_in2 : in std_logic_vector(31 downto 0); pr_out : out std_logic_vector(31 downto 0) ); end add_module; architecture Behavior of add_module is begin pr_out <= pr_in1 + pr_in2; end architecture Behavior; The error message I get from XST Line 17. + can not have such operands in this context. Do I miss a library? If

How to count pressed keys on FPGA spartan board

▼魔方 西西 提交于 2019-11-27 16:23:51
I`m using FPGA Spartan 2 board and want to count the keys pressed from Keyboard this is my VHDL code : library ieee ; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; use ieee.numeric_std.all; ENTITY Keyboard IS PORT(CLOCK : IN STD_LOGIC; RESET : IN STD_LOGIC; RK : IN STD_LOGIC_VECTOR(3 DOWNTO 1); DE : OUT STD_LOGIC_VECTOR(3 DOWNTO 1); Invalid_Key : OUT STD_LOGIC := '0'; Seg1 : OUT STD_LOGIC_VECTOR(7 Downto 0); Seg2 : OUT STD_LOGIC_VECTOR(7 Downto 0); LEDRow1 : OUT STD_LOGIC_VECTOR(7 Downto 0); LEDRow2 : OUT STD_LOGIC_VECTOR(7 Downto 0); Key : OUT STD

米联客 ZYNQ/SOC精品教程 S01-CH04 VIVADO创建工程之流水灯

我的梦境 提交于 2019-11-27 15:40:31
软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛: www.osrc.cn 答疑解惑专栏开通,欢迎大家给我提问!! 4.1 概述 本章课程以大家熟悉的流水灯为例子,详细讲解了VIVADO软件的使用,包括创建FPGA工程,编写Verilog代码,添加管脚约束,最后编译,下载bit文件到开发板测试。对于初学XILINX FPGA的读者请注意,bit文件断电后就丢失了。如果实现上电能够启动程序,需要把BIT文件打包成bin或者MCS文件才可以。如果打包,固化到FLASH,在后面的章节中我们再说。 4.2 硬件原理图 此图对应的是MZXA和MZ7XB开发板,其他开发板应阅读配套的硬件手册或者原理图查看pin脚。 4.3 新建VIVADO工程 Step1:启动VIVADO,单击Create Project Step2:单击NEXT Step3:创建名为Miz_sys的工程到对应的文件目录,文件路径自定义,不能有中文或非法字符,之后单击NEXT Step4:选择RTL Project并且勾选复选框,之后单击NEXT Step5:选择芯片的型号和封装速度等级: MZ7XA-7010、MZ7XA-mini7010如下图所示设置 : MZ7XA-7020、MZ7XB如下图所示设置 : Step:6

FPGA程序编译后逻辑单元数为0

烈酒焚心 提交于 2019-11-27 12:33:02
问题 FPGA代码写完后编译不报错,但是显示使用的逻辑单元数(Total logic elements)为0。当然程序也不工作。 我用的是Intel Altera FPGA,verilog语言,在Quartus下开发。 原因 顶层模块没有有效的输出。例如输出没有赋值,或者输出连接着子模块,但是子模块中出现问题。 如果没有正确地设置顶层模块的输出,则编译时优化,认为模块无输出,或者输出无需逻辑单元。 举例1: module test ( input clk, input rst, output out1, output out2, output out3 ); assign out1 = clk; assign out2 = ~clk; endmodule out1直接将时钟信号输出,未做任何处理;out2将时钟信号反相输出,只需要一个非门,不需要逻辑单元;而out3没有任何处理。 因此上述代码编译得到的逻辑单元数为0。 举例2: module test ( input clk, input rst, input [3:0] data, output out ); reg [3:0] store [7:0]; reg [3:0] k; always @ (posedge clk or negedge rst) begin if (!rst) k <= 1'b0; else begin

Altera FPGA– Bit Slip

那年仲夏 提交于 2019-11-27 09:45:25
通过在接收端加延时,在延时间隙插入‘0’或‘1’,以使最终接收和期望数据一致。 BitSlip操作要注意几点: 1,BitSlip操作在rx_bitslip的上升沿即开始; 2,BitSlip操作开始后,必须等待至少2个平行信号的时钟周期后,才可开始检查数据是否对齐;因为需要2个时钟周期清除受损数据。 来源: https://www.cnblogs.com/freshair_cnblog/p/11356903.html

C-to-hardware compiler (HLL synthesis) [closed]

余生颓废 提交于 2019-11-27 00:03:59
问题 Closed . This question needs to be more focused. It is not currently accepting answers. Want to improve this question? Update the question so it focuses on one problem only by editing this post. Closed 5 years ago . I try to make an survey/history of all C-to-hardware compilers. For all that dont know them: they take C code then translate it into some hardware description language (like VHDL or Verilog), which then can be used to generate hardware (usually it gets mapped to an FPGA - but I am