FPGA
ascend__a1
早起的菜鸟有虫吃
展开
-
Tcl在Vivado中的应用
转自:http://forums.xilinx.com/t5/Vivado专区/Vivado使用误区与进阶-Tcl在Vivado中的应用/td-p/525003Xilinx的新一代设计套件Vivado相比上一代产品ISE,在运行速度、算法优化和功能整合等很多方面都有了显著地改进。但是对初学者来说,新的约束语言XDC以及脚本语言Tcl的引入则成为了快速掌握Vivado使用技巧的最大障碍,以至转载 2015-02-03 10:34:38 · 4355 阅读 · 0 评论 -
Quartus常见错误分析
Quartus常见错误分析 ErrorWarning: VHDL Process Statement warning at random.vhd(18): signal reset is in statement, but is not in sensitivity list----没把singal放到process()中转载 2014-04-01 11:23:03 · 9417 阅读 · 0 评论 -
用Matlab生成txt格式波形数据
在用Modelsim仿真时,testbench设计时常会用到系统任务$readmemb和$readmemh,可以从txt文件读取二进制或者是十六进制数据,作为仿真激励。原始数据的生成可以借助Matlab实现,通过Matlab可以生成需要的波形,Matlab中的fopen和fprintf函数可以生成txt格式文件,并将波形数据以整型(%d)实数(%f)十六进制(%x)格式存入txt文件,但是需要注意原创 2014-03-19 16:01:52 · 10514 阅读 · 0 评论 -
Wire与Reg的使用方式测试报告
1、基本测试项语法测试结果说明组合:=(assign/initial/always_with_no_clk) assign用且仅用=,左值用且仅用wireinitial和always左值用且仅用reg,=和都可以,但是一般情况下,组合用=,时序用时序:(always_with_c转载 2014-03-18 23:52:23 · 2133 阅读 · 0 评论 -
verilog中阻塞赋值和非阻塞赋值的区别
1、阻塞赋值操作符用等号(即 = )表示。“阻塞”是指在进程语句(initial和always)中,当前的赋值语句阻断了其后的语句,也就是说后面的语句必须等到当前的赋值语句执行完毕才能执行。而且阻塞赋值可以看成是一步完成的,即:计算等号右边的值并同时赋给左边变量。例如:当执行“x=next_x;”时,x会立即的到next_x的值。而下一句“y=x;”必须等到转载 2014-03-19 00:17:35 · 17090 阅读 · 6 评论 -
Tcl In QuartusII
经过一周的学习,对Tcl已经有了大概的认识,虽然还不能很顺手地编写代码,但是已经基本能看懂大段的Tcl代码了。在第一节中,咱说过学习Tcl是为了更好地协助硬件开发,因此更深层次的东西咱也不学习了,学了如果不实践的话就会很快淡忘,这也是咱这几年学习的小经验:“实践就是最好的学习”。记得还在学校的时候,导师就会派各种活儿给咱,不管咱会不会,最开始咱主攻的可是FPGA,结果FPGA的活儿没有,单片机、A转载 2014-04-30 16:49:16 · 1712 阅读 · 0 评论 -
危险的未分配引脚(FPGA)
一波三折——危险的“未分配”引脚 第一折。半个月前,美国的同事对当前的一个工程进行了编译,并提交二进制文件(FPGA配置文件)给软件工程师进行集成。结果该二进制文件导致了整个系统的崩溃:FPGA二进制文件刚下载完毕,整个系统就不工作了。这一事件导致了美国FPGA工程师一整天的停工和系统恢复。Kevin给出的分析结果是,FPGA给出的中断信号有问题,该信号经过CPLD转发到CPU转载 2014-04-30 16:06:50 · 3311 阅读 · 0 评论 -
FPGA组合逻辑部件LUT的基本原理
数字逻辑电路一般都是时序部件(触发器)+组合逻辑(与门,或门,异或门等)来完成一系列的功能。既然完成一个特定的功能可以通过组合逻辑来实现,为什么要引入时序逻辑呢? 这是因为时序逻辑是基于时钟沿(上升沿或者下降沿)触发,只有在时钟边沿数据才会被锁存,具有良好的去毛刺,抑制干扰作用,保证了数字电路功能的正确性和稳定性。(这方面原理将会在下一篇博文中说明)。既然构成数字逻辑最重要的部件是组转载 2014-03-17 22:26:56 · 11266 阅读 · 0 评论 -
FPGA时钟讨论
无沦是用离散逻辑、可编程逻辑,还是用全定制硅器件实现的任何数字设计,为了成功地操作,可靠的时钟是非常关键的。设计不良的时钟在极限的温度、电压或制造工艺的偏差情况下将导致错误的行为,并且调试困难、花销很大。 在设计PLD/FPGA时通常采用几种时钟类型。时钟可分为如下四种类型:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。多时钟系统能够包括上述四种时钟类型的任意组合。1.全局时钟转载 2014-03-14 15:00:01 · 924 阅读 · 0 评论 -
Xilinx全局时钟资源BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用
目前,大型设计一般推荐使用同步时序电路。同步时序电路基于时钟触发沿设计,对时钟的周期、占空比、延时和抖动提出了更高的要求。为了满足同步时序设计的要求,一般在FPGA设计中采用全局时钟资源驱动设计的主时钟,以达到最低的时钟抖动和延迟。 FPGA全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM转载 2014-03-14 15:05:51 · 4417 阅读 · 0 评论 -
基于matlab FPGA verilog的FIR滤波器设计
FIR滤波器说明FPGA verilog的FIR滤波器设计(原创)" title="基于matlab FPGA verilog的FIR滤波器设计(原创)" style="margin:0px; padding:0px; border:0px; list-style:none">FPGA verilog的FIR滤波器设计(原创)" title="基于matlab FPGA ver转载 2014-03-13 17:01:02 · 4660 阅读 · 0 评论 -
三段式状态机的第一个输出状态
设计状态机时需要明确状态机各个状态是如何跳转的,要知道状态机是从哪一个状态开始输出的。 常用的三段式状态机设计一般采用三个alway语句: 1.第一个always语句描述时序逻辑,采用同步时序描述状态转移,更新current_state。 2.第二个always语句采用组合逻辑的方式判断状态转移条件、描述状态转移规律,根据current_state和输入条原创 2014-03-22 20:09:57 · 1752 阅读 · 1 评论 -
状态机设计
参考了网上的一些前辈blog和自己搜集到的资料,整理了一下读书笔记,虽然内容基本上都是别人写的,但是整理起来也好累 = =1. 有限状态机FSM(Finite State Machine)组成元素:输入、状态、状态转移条件、输出;可以分为两类:Mealy状态机:时序逻辑的输出不仅取决于当前状态,还与输入有关;Moore状态机:时序转载 2014-03-22 09:18:47 · 5626 阅读 · 2 评论 -
Vivado IP核剖析
转自http://blog.chinaaet.com/detail/37167正像我之前所说的,较XPS的IP核而言,Vivado IP核在创建、打包、使用等各方面都更加简单便捷,同样的Vivado IP核抛弃了以往复杂的IP核文件组织模式,仅使用一个component.xml文件对IP核进行描述。下面,我们就看一下这个component.xml如何替代*.mpd,*.pao等文件的。转载 2015-01-10 20:51:25 · 6250 阅读 · 0 评论 -
【Vivado使用误区与进阶】XDC约束技巧——时钟篇
转自http://www.globalicnet.com/bbs/question/detail_3102.htmlXilinx 的新一代设计套件Vivado中引入了全新的约束文件XDC,在很多规则和技巧上都跟上一代产品ISE中支持的UCF大不相同,给使用者带来许多额外挑战。Xilinx工具专家告诉你,其实用好XDC很容易,只需掌握几点核心技巧,并且时刻牢记:XDC的语法其实就是Tcl转载 2015-01-09 17:20:42 · 19220 阅读 · 1 评论 -
强大的Vivado IP工具——自定义IP的使用(IP packager)
转自http://blog.chinaaet.com/detail/37169首先,要指出,本文不描述任何IP的功能与使用。在开发一个大型FPGA项目时,多人协作是必不可少的。这个时候,如何提交设计给负责集成的人,是项目开发中最关键的问题之一。常用的一个方法是,提交网表。网表的提交可以算是相当方便的操作了,这在ISE的时期还体会不到,但到了Vivad转载 2015-01-24 15:31:27 · 12720 阅读 · 1 评论 -
Xilinx hw_server Program FPGA failed
Failed to connect to Xilinx hw_server. Check if the hw_server is running and correct TCP port is used.Program FPGA failed Failed to connect to Xilinx hw_server. Check if the h转载 2014-06-13 11:52:15 · 3175 阅读 · 0 评论 -
OSI七层模型详解
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。 一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。转载 2014-07-02 21:24:16 · 532 阅读 · 0 评论 -
timing中的slack是什麼意思? (SOC) (Quartus II)(非常不错的一篇文章)
真 OO无双 之 真乱舞书寫程式是很快樂的一件事 Since Sep.15,2006(原創) timing中的slack是什麼意思? (SOC) (Quartus II)Abstract在分析timing時,在timing report中常會出現setup time slack與hold time slack,本文深入探討slack的意義。Intro转载 2014-05-19 14:56:00 · 2399 阅读 · 0 评论 -
我遇到的Quartus II警告及原因——持续更新
1、Warning (10227): Verilog HDL Port Declaration warning at PRESS_MODELE.v(29): data type declaration for "iR" declares packed dimensions but the port declaration declaration does not.解释:2、Wa转载 2014-05-19 09:25:52 · 5844 阅读 · 0 评论 -
基于DE2-115的LCD1602应用
module LCD(clk,rst,LCD_E,LCD_RW,LCD_RS,LCD_DATA); input clk; //时钟信号,50Mhz input rst; //复位信号,低电平进行复位 output LCD_E; //1602使能引脚,1时读取信息,1->0(下降沿)执行命令 output LCD转载 2014-04-24 14:46:23 · 2299 阅读 · 1 评论 -
Verilog编程规范(补充中)
良好的编程规范可以提高设计人员的工作效率,方便非原作者对代码进行维护。一、命名约定1.文件的名称与模块的名称一致,arbiter.v文件内部模块为module arbiter。2.每个模块用一个文件表示,而且一个文件最多表示一个模块。3.在整个层次化的设计中采用不变的名称,例如在例化的时候,顶层模块和调用的底层模块的变量名称保持一致。 推荐使用如下的例化方式 blo原创 2014-03-26 17:23:13 · 2140 阅读 · 0 评论 -
Quartus II 时序约束
时序约束对于增加sh原创 2014-05-07 22:02:00 · 6769 阅读 · 0 评论 -
fpga中从有符号数、无符号数衍生
在设计中,所有的算数运算符都是按照无符号数进行的。如果要完成有符号数计算,对于加、减操作通过补码处理即可用无符号加法完成。对于乘法操作,无符号数直接采用“*”运算符,有符号数运算可通过定义输出为 signed 来处理。通过“*”运算符完成有符号数的乘法运算。module ceshi (out, clk, a, b); output [15:0] out;转载 2014-03-13 08:59:00 · 1488 阅读 · 0 评论 -
Verilog HDL无符号数和有符号数运算
执行算术操作和赋值时,注意哪些操作数为无符号数、哪些操作数为有符号数非常重要。无符号数存储在:* 线网* 一般寄存器* 基数格式表示形式的整数 有符号数存储在:* 整数寄存器* 十进制形式的整数 下面是一些赋值语句的实例:reg [0:5] Bar;integer Tab;. . .Bar = -4转载 2014-03-13 09:33:10 · 5974 阅读 · 2 评论 -
独热码one-hot code
1.独热码概念 独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制。通常,在通信网络协议栈中,使用八位或者十六位状态的独热码,且系统占用其中一个状态码,余下的可以供用户使用。 例如,有6个状态的独热码状态编码为:000001,000010,000100,001000,01转载 2014-02-27 16:45:57 · 3907 阅读 · 0 评论 -
关于DDS的几点理解
DDS的理解关键在于分清相位累加器、ROM查找表和DAC的位数的不同,如果将上述三者的位数混淆的话就很难理解DDS的原理。 直接数字频率合成器DDS(Direct Digital Synthesizer)是从相位概念出发直接合成所需波形的一种频率合成技术,通过控制相位的变化速度,直接产生各种不同频率、不同波形信号的一种频率合成方法。DDS 的基本结构如下图 所示,它主要由相位累加器、原创 2013-12-19 10:23:09 · 19039 阅读 · 0 评论 -
XILINX DCM and ALTERA PLL
转自http://www.eefocus.com/zhangjingbin/blog/10-12/199677_73b6c.html时钟---锁相环 1. Xilinx DCM数字时钟管理模块(Digital Clock Manager,DCM)是基于Xilinx的其他系列器件所采用的数字延迟锁相环(DLL,Delay Locked Loop)模块。在时钟的管理转载 2013-12-16 09:46:53 · 2471 阅读 · 0 评论 -
Modelsim 安装破解 unable to checkout a viewer license
转自ModelSimhttp://www.eefocus.com/nightseas/blog/12-03/239859_99372.html作为仿真利器,是做CPLD和FPGA不可或缺的一款软件。在进行仿真之前,先要说说和谐安装的问题。安装软件可以在www.modelsim.com上下载,官方提供了最新的安装包以及许多历史版本,根据需要选择相应版本后,随便填写一下个人信息(这个表格貌似没有任转载 2013-11-17 15:33:39 · 48802 阅读 · 8 评论 -
基于verilog的三段式状态机
三段式状态机的优势:三段式描述方法与一段式和两段式状态机描述相比,虽然代码结构复杂了一些,但是换来的优势是使FSM(Finite State Machine)做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。 需要掌握的是三段式状态机的综合效果。通常,三段式状态机分成三个al转载 2013-10-28 11:15:36 · 2449 阅读 · 0 评论 -
Verilog中assign的使用
assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。 assign的功能属于组合逻辑的范畴,应用范围可概括为以下三点:(1)持续赋值;(2)连线;(3)对wire型变量赋值,wire是线网,相当于实际的连接线,如果要用assign直接连接,就用wire型变量。wire型变原创 2013-10-25 19:29:16 · 105671 阅读 · 4 评论 -
Quartus II 管脚配置
Quartus II软件常用的分配管脚的方法有两种,一是选择菜单“assignments->pinplanner”进入管脚分配视图手动分配;第二种方法是利用tcl脚本文件自动分配。 首先介绍一下Quartus II 的qsf文件和tcl文件。qsf(Quartus Settings File)文件是工程设置文件,包含了一个Quartus工程的所有约束,包括工程信息、器件信息、引脚原创 2013-09-26 10:30:59 · 15401 阅读 · 0 评论 -
关于verilog中initial和always过程快的执行顺序问题
initial和always是两个基本的过程结构语句,在testbench仿真一开始就立即相互并行执行。通常被动检测响应使用always语句,而主动的产生激励使用initial语句。 那就有一个问题了:既然过程块是并行执行的,那initial和always是一起并行执行的?有没有先后顺序? 实际上 initial块与always 块可看做是顺序执行的。因为在的alw原创 2013-10-10 15:11:45 · 22586 阅读 · 3 评论 -
Quartus II 和Modelsim联调
QuartusII 从9.0版本就去掉了自带的波形仿真功能,采用第三方软件进行仿真。最常用的就是Modelsim了,本文以Quartus II 10.0和 Modelsim Altera 6.5e为模板讲解如何进行设计的仿真。不同版本的软件在实际仿真时可能略有差别,但原理相通。由于笔者水平有限,欢迎大牛们交流指正。 本文以send.v文件作为被测试的模块。以下是具体的操作流程:原创 2013-10-10 11:17:30 · 4086 阅读 · 0 评论 -
建立时间和保持时间
时钟是整个电路最重要、最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错;因而明确FPGA设计中决定系统时钟的因素,尽量较小时钟的延时对保证设计的稳定性有非常重要的意义。 1.1 建立时间与保持时间 建立时间(Tsu:set up time)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如转载 2014-02-16 19:50:09 · 2192 阅读 · 0 评论 -
SignalTap的使用简介
1.SignalTap简介SignalTap II全称SignalTap II Logic Analyzer,是一款功能强大且极具实用性的FPGA片上debug工具软件,它集成在altera公司提供的FPGA开发工具Quartus II中,是第二代系统级调试工具,可以捕获和显示实时信号,观察在系统设计中的硬件和软件之间的互相作用。Quartus II软件可以选择要捕获的信号、开始捕获的时间原创 2014-02-16 21:13:41 · 2724 阅读 · 0 评论 -
FPGA 有符号,无符号
test_signed.vmodule test_signed(clk,data_out); parameter Data_OUT_WIDTH = 5; input clk;// output signed[Data_OUT_WIDTH - 1 : 0]data_out; output [Data_OUT_WIDTH - 1 : 0]data_out; assign d转载 2014-03-13 09:12:35 · 2565 阅读 · 0 评论 -
FPGA 补码存在的意义
每一个人都有存在的意义, 有的人用一生的时间去寻找自己的存在意义, 有的人则是经过生活的大反转,看到了自己存在意义,有的人则不闻不问 ... 当然补码也有存在的意义, 补码存在的意义, 就是避免计算机去做减法的操作。 为什么数字电路中要使用补码呢?因为:作减法运算时,如果两个数是用原码表示的,则首先需要比较两数绝对值的大小,然后以绝对值大的一个作为被减数、绝对值小的一个作为减数,求出差值,并以转载 2014-03-13 09:09:50 · 2742 阅读 · 0 评论 -
matlab和FPGA中无符号数和有符号数的转化(转)
在FPGA 设计过程中经常会遇到关于数表示之间的转化问题,最常见的是无符号数和有符号数之间的转化问题。(1)在FPGA设计过程中,能够很直接的看出数字的位宽,但经常以无符号数的形式输出,在后继的处理中往往要将之转化为有符号数(如:计算频谱):对于一个比特宽度为W的有符号数,其值往往可以表示为(令W = 4): -1*b3*2^3 + b2*2^2 + b1*2^1 + b0*2^转载 2014-03-13 09:08:22 · 3194 阅读 · 0 评论 -
FPGA中的锁存器(latch)、触发器(Flip-flop)、寄存器(register)(待补充)
latch 是电平触发,register 是边沿触发,register 在同一时钟边沿触发下动作,符合同 步电路的设计思想,而 latch 则属于异步电路设计,往往会导致时序分析困难,不适当的应 用 latch 则会大量浪费芯片资源。原创 2014-02-20 15:21:08 · 5146 阅读 · 1 评论