随笔分类 - FPGA、matlab编程知识
编程语言笔记
摘要:在FPGA 设计过程中经常会遇到关于数表示之间的转化问题,最常见的是无符号数和有符号数之间的转化问题。(1)在FPGA设计过程中,能够很直接的看出数字的位宽,但经常以无符号数的形式输出,在后继的处理中往往要将之转化为有符号数(如:计算频谱):对于一个比特宽度为W的有符号数,其值往往可以表示为(令W = 4):-1*b3*2^3 + b2*2^2 + b1*2^1 + b0*2^0根据这一原理,给出以下Matlab 代码:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function [b] = unsigned2signed(data, width)%Thi
阅读全文
摘要:根据txt文档不同种类介绍不同的读取数据方法一、纯数据文件(没有字母和中文,纯数字)对于这种txt文档,从matalb中读取就简单多了例如test.txt文件,内容为“17.901 -1.1111 33.045 17.891 -1.1286 33.045 17.884 -1.1345 33.045”可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。二、中英文和数据如test1.txt“你
阅读全文
摘要:TestBench的主要目标是:实例化DUT-Design Under Test为DUT产生激励波形产生参考输出,并将DUT的输出与参考输出进行比较提供测试通过或失败的指示TestBench产生激励的三种方式:直接在testbench中产生从矢量中读入从单独的激励文件中读入比较流行的做法是使用matlab产生激励文件,由testbench读入该激励文件并将激励馈送到DUT,DUT产生的相应输出以文件的形式存储,由matlab读取并与理想的响应作比较。下面以一个简单的同步加法器为例,分析不同形式的testbench的写法。1. 简单的TestBench简单的testbench只适合于相对比较简单
阅读全文
摘要:大多数硬件设计人员对verilog的testbench比较熟悉,那是因为verilog被设计出来的目的就是为了用于测试使用,也正是因为这样verilog的语法规则才被设计得更像C语言,而verilog发展到后来却因为它更接近C语言的语法规则,设计起来更加方便,不像VHDL那也死板严密,所以verilog又渐渐受到硬件设计者们的青睐。但其实VHDL在最开始也是具有测试能力的,而且它的语法严密,但我们同样可以用它来编写我们的测试文件。下面以一个8bit计数器为例子给出个简单的testbench模板及注释:通过编写testbench来仿真和通过拖波形来仿真,最大的好处就是,当测试数据无比庞大时,可以
阅读全文
摘要:1.1 概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛。因此,FPGA时序约束中IO口时序约束也是一个重点。只有约束正确才能在高速情况下保证FPGA和外部器件通信正确。1.2 FPGA整体概念 由于IO口时序约束分析是针对于电路板整个系统进行时序分析,所以FPGA需要作为一个整体分析,其中包括FPGA的建立时间、保持时间以及传输延时。传统的建立时间、保持时间以及传输延时都是针对寄存器形式的分析。但是针对整个系统FPGA的建立时间保持时间可以简化。 图1.1 FPGA整体时序图 如图1.1所示,为分解的FPGA...
阅读全文
摘要:何谓静态时序分析(Static Timing Analysis,简称STA)? 它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。分析的最终结果当然是要求系统时序满足设计者提出的要求。 下面举一个最简单的例子来说明时序分析的基本概念。假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。我们的系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图4.1所示的一些可能的布局布线方式。那么,怎样的布局布线能够达到我们的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、14ns
阅读全文
摘要:摘要:12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!1.gets()函数问:请找出下面代码里的问题:#includeintmain(void){charbuff[10];memset(buff,0,sizeof(buff));gets(buff);printf("\nThebufferenteredis[%s]\n",buff);return0;}答:上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。这里推荐使用标准函数fgets()代替。2.strcpy()函
阅读全文
摘要:一、例子我们使用如图1所示的verilog代码所实现的开关电路作为例子。这个电路把DE系列开发板上的前8个开关简单的和对应的8个红色LED相连接。它是这样工作的:在时钟(CLOCK_50)的上升沿读取开关的值,放入对应的寄存器,寄存器的输出与红色LED直接相连接。按照图1代码实现该电路,锁定引脚,编译整个工程等等,这些在这里不再重复累述。二、使用SignalTap II软件在本文的第一部分,我们将建立SignalTap逻辑分析仪来探测8个LED开关的值,同时,我们将设定逻辑分析仪的触发信号为当第一个开关(LED[0])为高电平。1.选择File->New打开逻辑分析仪窗口,该窗口如图2所
阅读全文
摘要:这两天做综合后仿真,发现FPGA器件库又不会加了,无奈上网找方法。说起来不好意思,很早就接触Modelsim这个仿真软件了,可是没有好好琢磨。把这两天找的方法贴出来,再加上自己的理解,以后忘了可以上博客翻翻,也适合新手看。(这个办法是quartusII综合完后启动Modelsim仿真综合后的网表,要是quartusII里直接启动Modelsim需不需要加库不清楚,我没试过)-----------------------------------转载分割线-----------------------------------------------------以下内容转载Efronc博客园http
阅读全文
摘要:本篇文章为转载,写的不错,最近在学modelsim仿真,网上的教程很乱,把自己认为不错的整理贴出来,后面有机会会写个详细点的。Quartus中调用modelsim的流程1. 设定仿真工具assignmentèsettingèEDA tool settingèsimulation选择你需要的工具。2. 自动产生测试激励文件模板:processingèstartèStart test bench template writer我们点击之后系统会自动在目录:当前文件夹èsimulationèmodelsim (这个文件夹名字跟你选
阅读全文
摘要:相信很多人会遇到过这个问题,不知如何让ISE调用Modelsim进行仿真。我也迷糊了不少时间,查查找找,终于弄明白了,所以有了本文,和大家分享一下。我尽量讲得详细点儿,多多上图。我的环境:Windows 7 64位,Xilinx ISE Design Suite 13.4(D:\Xilinx\13.4),ModelsimSE-64 10.1a(D:\modeltech64_10.1a,哈,也是64位的)。不过32位的和64位的设置几乎没有什么区别。先安装好ISE和Modelsim,网上看过一些文章总说先装ISE再装Modelsim,不过我整过一阵,其实二者的顺序是无关紧要的。安装过程不在本文的
阅读全文
摘要:MATLAB有很强的图形功能,可以方便地实现数据的视觉化。强大的计算功能与图形功能相结合为MATLAB在科学技术和教学方面的应用提供了更加广阔的天地。下面着重介绍二维图形的画法,对三维图形只作简单叙述。 5.1二维图形的绘制5.1.1基本形式二维图形的绘制是MATLAB语言图形处理的基础,MATLAB最常用的画二维图形的命令是plot,看两个简单的例子:>> y=[0 0.58 0.70 0.95 0.83 0.25];>> plot(y)生成的图形见图5-1,是以序号为横坐标、数组y的数值为纵坐标画出的折线。>> x=linspace(0,2*pi,30)
阅读全文
摘要:(一)对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为C语言并没有提供真正的“端口”的概念。如果是内存映射,那就方便的多了。举个例子,比如向寄存器A(地址假定为0x48000000)写入数据0x01,那么就可以这样设置了:#define A (*(volatile unsigned *) 0x48000000 )... A = 0x01;...这实际上就是内存映射机制的方便性了。其中volatile关键字是嵌入式系统开发的一个重要特点。volatile(可变的)这个关键字说明这变量可
阅读全文
摘要:1、|.out文件出不来----error: symbol referencing errors - './Debug/PWM_EX.out' not built这是没有为工程指定选用具体的rts库文件所致;两种方法可以用来进行修正,方案一、直接将所需要的库文件加到项目工程中,譬如:鼠标右键,点击“Add Files to Project...”,选中:C:\CCStudio_v3.3\C5500\cgtools\lib\rts2800.lib;方案二、修改链接器的链接参数即可;譬如:鼠标右键,点击“Build Options...”,选Linker Tab, Category
阅读全文
摘要:TestBench的主要目标是:实例化DUT-Design Under Test为DUT产生激励波形产生参考输出,并将DUT的输出与参考输出进行比较提供测试通过或失败的指示TestBench产生激励的三种方式:直接在testbench中产生从矢量中读入从单独的激励文件中读入比较流行的做法是使用matlab产生激励文件,由testbench读入该激励文件并将激励馈送到DUT,DUT产生的相应输出以文件的形式存储,由matlab读取并与理想的响应作比较。下面以一个简单的同步加法器为例,分析不同形式的testbench的写法。1. 简单的TestBench简单的testbench只适合于相对比较简单
阅读全文
摘要:六、 包集元件1. 包集经常使用的代码通常以component,或procedure的形式编写。这些代码被添加到package中,并在最后编译到目标library中。Package中还可以包含TYPE和CONSTANT的定义。语法格式如下:package package_name is (declaration)end package_name;package body package_name is ( and procedure deion)end package_name;]Example6.1 简单的程序包library ieee;use ieee.std_logic_1164.all
阅读全文
摘要:四、 顺序代码在PROCESS, , PROCEDURE内部的代码都是顺序执行的,这样的语句包括IF,WAIT,CASE和LOOP。变量只能在顺序代码中使用,相对于信号而言,变量是局部的,所以它的值不能传递到PROCESS,和PROCEDURE的外部。1. 进程(PROCESS)进程内部经常使用IF,WAIT,CASE或LOOP语句。PROCESS具有敏感信号列表(sensitivity list),或者使用WAIT语句进行执行条件的判断。PROCESS必须包含在主代码段中,当敏感信号列表中的某个信号发生变化时(或者当WAIT语句的条件得到满足时),PROCESS内部的代码就顺序执行一次。语法
阅读全文
摘要:三、 并发代码VHDL中并发描述语句有WHEN和GENERATE。除此之外,仅包含AND, NOT, +, *和sll等逻辑、算术运算操作符的赋值语句也是并发执行的。在BLOCK中的代码也是并发执行的。从本质上讲,VHDL代码是并行执行的。只有PROCESS, , PROCEDURE内部的代码才是顺序执行的。但是当它们作为一个整体时,与其他模块之间又是并行执行的。并发代码称为“数据流”代码。通常我们只能用并发描述语句来实现组合逻辑电路,为了实现时序逻辑电路,必须使用顺序描述语句。事实上,使用顺序描述语句可以同时实现组合逻辑电路和时序逻辑电路。在并发代码中可以使用以下各项:? 运算操作符? WH
阅读全文
摘要:二、 运算操作符和属性1. 运算操作符l 赋值运算符赋值运算符用来给信号、变量和常数赋值。 用于对矢量中的某些位赋值,或对某些位之外的其他位赋值(常用OTHERS表示)。例:SIGNAL x: STD_LOGIC;VARIABLE y: STD_LOGIC_VECTOR(3 DOWNTO 0); –最左边的位是MSBSIGNAL w: STD_LOGIC_VECTOR(0 TO 7); –最右边的位是MSBx ‘1’, OTHERS => ‘0’); – LSB位是1, 其他位是0l 逻辑运算符操作数必须是BIT, STD_LOGIC或STD_ULOGIC类型的数据或者是这些数据类型的扩
阅读全文
摘要:一、 数据类型1.用户自定义数据类型使用关键字TYPE,例如:TYPE my_integer IS RANGE -32 TO 32;–用户自定义的整数类型的子集TYPE student_grade IS RANGE 0 TO 100;–用户自定义的自然数类型的子集TYPE state IS (idle, forward, backward, stop);–枚举数据类型,常用于有限状态机的状态定义一般来说,枚举类型的数据自动按顺序依次编码。2.子类型在原有已定义数据类型上加一些约束条件,可以定义该数据类型的子类型。VHDL不允许不同类型的数据直接进行操作运算,而某个数据类型的子类型则可以和原有类
阅读全文

浙公网安备 33010602011771号