当前位置:文档之家› 赛灵思高层次综合工具加速FPGA设计

赛灵思高层次综合工具加速FPGA设计

赛灵思高层次综合工具加速FPGA设计
赛灵思高层次综合工具加速FPGA设计

赛灵思高层次综合工具加速FPGA设计

382

作者:Sharad Sinha

博士生

新加坡南洋理工大学

sharad_sinha@https://www.doczj.com/doc/5f11909171.html,.sg

Vivado HLS配合C语言等高级语言能帮助您在FPGA上快速实现算法。

高层次综合(HLS)是指自动综合最初用C、C++或SystemC语言描述的数字设计。工程师之所以对高层次综合如此感兴趣,不仅是因为它能让工程师在较高的抽象层面上工作,而且还因为它能方便地生成多种设计解决方案。利用HLS,您能探索各种可能性,分析面积和性能特点,最终确定一个方案在FPGA芯片上实现算法。举例来说,您能探索将存储器映射到Block RAM(BRAM)或分布式RAM上有什么不同的影响,或者分析回路展开以及其它回路相关优化有什么效果,而且不必手动生成不同的寄存器传输级(RTL)设计。您所要做的仅仅是在

C/C++/SystemC设计中设置相关指令而已。

赛灵思在其最新发布的Vivado?工具套件中推出了HLS工具。Vivado HLS是AutoESL工具的品牌转型重塑,可提供众多技术帮助您优化C/C++/SystemC代码以实现目标性能。这样的HLS工具就能帮助您在FPGA上快速实现算法,无需借助基于Verilog和VHDL等硬件描述语言的非常耗时的RTL设计方法。

为了帮助用户了解Vivado HLS如何工作,我们不妨以矩阵乘法设计为例逐步剖析从设计描述(C/C++/SystemC)到FPGA实现整个端对端综合流程。矩阵乘法在许多应用中都很常见,并广泛用于图像和视频处理、科学计算和数字通信。本项目中的所有结果均使用Vivado HLS 2012.4生成,搭配使用赛灵思ISE?软件(14.4版)进行物理综合和布局布线。此外,这一流程还采用了ModelSim和GCC-4.2.1-mingw32vc9进行RTL协同仿真。

图1显示了简单的综合流程,从C/C++/SystemC设计开始。C/C++/SystemCtestbench 用于验证设计功能的正确性,同时还可用于RTL和C的协同仿真。协同仿真包括验证生成的

RTL设计(.v或.vhd)功能,这要使用C/C++/SystemC测试平台而不是RTL测试平台或者采用e或Vera验证语言编写的测试平台。时钟周期约束设置了设计应该运行的目标时钟周期。设计将被映射到目标FPGA器件——赛灵思FPGA上。

C语言的矩阵乘法

为了充分利用我们的矩阵乘法实例,我们将探索矩阵乘法C语言实现方案的各种修订版本,从而展示它们对综合设计的影响。这一过程将凸显您在使用HLS进行原型设计和实际设计时需要注意的重要问题。我们将跳过创建工程的有关步骤,因为您能很方便地在工具文档中找到相关参考材料。我们将重点介绍设计和实现等方面。

在典型的Vivado HLS流程中,我们需要三个C/C++文件:源文件(包括待综合的C函数)、头文件和通过main()函数调用描述testbench的文件。

头文件不仅包括源文件中使用的函数的声明,也包括支持具有特定位宽的用户定义数据类型的指令。这也使得设计人员能够采用与C/C++所定义标准位宽不同的位宽。举例来说,整形数据类型(int)在C语言常为32位长,但是在Vivado HLS中您可指定用户定义的数据类型,例如只使用16位的“data”。

图2显示了用于矩阵乘法的简单C函数。两个矩阵mat1和mat2进行乘法。为了简单起见,两个矩阵大小一样,都是两行两列。

在HLS流程中执行的步骤如下:

?第一步:创建工程

?第二步:测试功能

?第三步:综合

?第四步:RTL协同仿真

?第五步:导出RTL / RTL实现

第一步编译工程并在不同的设计文件中测试语法错误等。第二步测试待实现的函数(在源文件中)功能是否正确。在这一步骤中您将使用testbench执行函数调用,验证其功能是否正确。如果功能验证失败,您就需要返回来修改设计文件。

第三步进行综合,Vivado HLS综合源文件中定义的函数。这一步的输出包括C函数的Verilog和VHDL代码(RTL设计),也包括目标FPGA的资源利用率估算和时钟周期估算。此外,Vivado HLS还可生成latency估算和回路相关的度量指标等。

第四步是使用C testbench仿真生成的RTL。这一步叫做RTL协同仿真,因为工具采用的就是之前用于验证C源代码的testbench,现在则测试RTL的功能正确性。要成功完成这一步,您系统(Windows或Linux)中的PATH环境变量应包含ModelSim安装的路径。此外,您还应在ModelSim安装文件夹中包含GCC-4.2.1-mingw32vc9套件。

最后,第五步就要将RTL导出为IP模块,用于更大的设计中,并由其它赛灵思工具进行处理。您可将RTL导出为IP-XACT格式的IP模块,也可导出为System Generator IP模块或

pcore格式的IP模块,进而用于赛灵思嵌入式设计套件。导出Vivado生成的RTL时,您可以选择工具的“评估”选项来评估布局布线后的性能并且运行RTL实现。在此情况下,Vivado HLS工具会调用赛灵思ISE工具。要实现这一目的,您的系统PATH环境变量需包括ISE安装路径,Vivado HLS将会搜索ISE安装。

当然,您也不一定非要将Vivado生成的RTL导出为以上三种格式之一的IP模块不可。导出的格式文件可放在三个不同路径下:

//impl/

或project_directory>//impl/或

//impl/。此外,您也可在较大设计中使用Vivado生成的RTL,或者将其本身用作顶层设计。当较大设计中例化导出的RTL时,您应注意相关接口要求。

当综合图2中的C函数时,您将获得如图3所示的RTL级实现方案。您会发现,实现方案中的矩阵1和矩阵2的元素被读取到函数,并且积矩阵的元素被写出。这样,实现方案假定“矩阵乘法”实体以外的存储器能用来存储矩阵1、矩阵2和乘积矩阵的元素。表1介绍了信号描述,表2则介绍了设计度量指标。

表2:用于图3所示设计的设计度量指标

设计度量指标器件:XC6VCX75TFF784-2

DSP48E 1

查找表44

触发器61 实现的最佳时钟周期(ns) 2.856 时延69 吞吐量(初始间隔)69 表1:面向图3中设计的信号描述

信号描述matleft_ce0 矩阵1存储器的芯片使能

matleft_q0[15:0] 矩阵1的16位元素

matleft_address[1:0] 矩阵1存储器的读地址

matright_ce0 矩阵2存储器的芯片使能matright_q0[15:0] 矩阵2的16位元素

matright_address[1:0] 矩阵2存储器的读地址

product_ce0 积矩阵的存储器的芯片使能product_we0 积矩阵的存储器的写使能

product_d0[15:0] 积矩阵存储器的写数据

product_q0[15:0] 积矩阵存储器的读数据

product_address0[1:0] 积矩阵要读写数据的地址

ap_clk 设计的时钟信号

ap_rst 设计的高有效同步复位信号

ap_start 开始计算的开始信号

ap_done 计算结束和输出就绪的完成信号

ap_idle 表示实体(设计)空闲的空闲信号

ap_ready 表示设计为新输入数据做好准备,与ap_idle配合使用

在表1中,start、done和idle信号与设计中控制数据路径的有限状态机(FSM)有关。您会发现,Vivado HLS生成的Verilog假定运算始于start信号,并且输出数据在ap_done信号从低变高开始有效。Vivado HLS生成的Verilog/VHDL将始终保持至少三个基本信号:

ap_start、ap_done和ap_idle,此外还有ap_clk信号。这意味着不管您使用Vivado HLS 实现什么设计,设计latency都会限制您的流吞吐量。图2中的设计latency为69个时钟周期,目标时钟周期为3纳秒。这意味着在此特定案例中,所有积矩阵元素需要69个时钟周期可输出。这样,您在至少69个时钟周期前不能为设计提供新一组的输入矩阵。

图3中所示的实现方案现在可能并不是您在FPGA上实现矩阵乘法时所预想的结果。您或许

希望一款实现方案能让您输入矩阵,并在部进行存储和计算,随后读取积矩阵元素。这显然是图2所示实现方案无法做到的。该实现方案需要外部存储器提供矩阵数据的输入和输出。

调整代码

图4中的代码能够满足您的需求,它是源文件的一部分,应该属于C++文件而非此前的C文件。您应在头文件matrixmultiply.h中包含另外两个相关头文件:hls_stream.h和

ap_int.h。请注意,在图2中,当源文件为C文件时,头文件包含了ap_cint.h。头文件

ap_int.h和ap_cint.h有助于分别为C++和C源文件定义用户定义的任意位宽的数据类型。需要头文件hls_stream.h来充分利用流接口,并且只有在源文件为C++语言时才能使用。

图4:用于矩阵乘法的重组源代码

为了让设计只接收输入矩阵流,并输出积矩阵流,您应在代码中实现读和写数据流。流接口就像FIFO。默认情况下这个FIFO的深度为1。

表3 - 图5中设计的信号描述

信号描述

d_mat1_V_read 设计为矩阵1(左侧矩阵)输入做好准备时的信号

d_mat1_V_dout

[15:0]

矩阵1的16位流元素

d_mat1_V_empty 通知设计矩阵1没有更多元素的信号

d_mat2_V_read 设计为矩阵2(右侧矩阵)输入做好准备时的信号

d_mat2_V_dout

[15:0]

矩阵2的16位流元素

d_mat2_V_empty 通知设计矩阵2没有更多元素的信号

d_product_V_din

[15:0]

积矩阵的16位输出元素

d_product_V_full_n 通知设计积矩阵应该被写入的信号

d_product_V_write 显示积矩阵正在被写入数据的信号

ap_clk 设计的时钟信号

ap_rst 设计的高有效同步复位信号ap_start 开始计算的开始信号

表4:图5所示设计的设计度量指标

器件:XC6VCX75TFF784-2

设计参数

无BRAM

或无分布式RAM 存储矩阵 单端口BRAM 存储矩阵 分布式RAM (LUT 实现)存储矩阵 DSP48E 1 1 1 查询表 185 109 179 触发器 331 102 190 BRAM 0 3 0 实现的最佳时钟周期(纳秒) 2.886 3.216 2.952 时延

84 116 104 吞吐量(初始间隔)

84

116

104

为了让设计只接受输入矩阵流,并输出积矩阵流,您应在代码中实现读和写数据流。代码hls::stream<>stream_name 用于为读和写数据流命名。这样,d_mat1和d_mat2为读取流而d_product 为写入流。流接口就像FIFO 那样工作。默认情况下,FIFO 的深度为1。您应在Vivado HLS 指令面板过选择定义的数据流设置深度。对于图4中的代码而言,每个数据

ap_done

计算结束和准备好信号输出的完成信号

ap_idle

表明实体(设计)空闲的空闲信号

ap_ready

表示设计为新输入数据做好准备,与ap_idle 配合使用

流的深度都为4个数据单元。请注意,这里的(i,j)回路在(p,q)回路之前执行,这是C++代码的顺序特性使然。因此,d_mat2数据流会在d_mat1数据流之后填满。

完成数据流接口后,您可应用指令RESOURCE并通过指令面板选择一个核,从而选择将矩阵映射到BRAM。否则将用触发器和查找表(LUT)实现矩阵。请注意,指令面板只有当源文件在综合视图中保持有效时才是有效的。

图5显示了图4中代码的设计实现情况。表3介绍了设计接口上可用的信号情况。在表3中,d_product_V_full_n是低有效信号,当需要通知核积矩阵已满时该信号为低。但在实现方案常不需要这样。

表4显示了3纳秒时钟周期约束下布局布线后的不同设计度量指标,包含了矩阵阵列映射到BRAM或分布式RAM的情况和未映射的情况。您从表4中可以看到,矩阵映射到单端口BRAM时,设计无法满足3纳秒的时序约束。表中专门包含了这个结果,说明您可用这种方法生成具有不同面积—时序参数的各种设计。此外,您也可从表1看出,虽然图2中代码的时延为69个时钟周期,低于图4中调整后的代码的设计方案,但这种设计需要矩阵乘法实体以外的存储器,这一点我们在上面已经解释过了。

实现方案的精度

就这里显示的结果而言,我将“data”这种数据类型定义为16位宽。因此,所有矩阵元素(左、右和积矩阵)都为16位宽。矩阵乘法和加法运算不能实现全精度。您可选择在头文件中定义另一种32位宽的数据类型data_t1,积矩阵的所有元素都采用这种数据类型,因为16位数(左侧矩阵元素)乘以另一个16位数(右侧矩阵元素)最多得到32位宽。这样,资源利用率和时序结果将不同于表1和表4中的结果。

调整后的源代码显示出同样的源文件会带来多种不同设计解决方案。在本例中,一个设计解决方案采用BRAM,而另一个没有采用。在每个Vivado HLS工程目录中,您会看到Vivado HLS为不同的解决方案生成了不同的目录。在每个解决方案目录中都有一个名叫impl(也就是implementation,实现方案)的子目录。在这个子目录中,您会看到名为Verilog或VHDL的目录,具体取决于RTL实现阶段使用什么样的源代码。这个子目录中也包含赛灵思ISE工程文件(文件扩展名为.xise)。如果Vivado HLS生成的设计是您的顶层设计,那么您可以双击这个文件来启动赛灵思ISE运行这个解决方案,并生成用于门级时序和功能仿真的布局布线后模型。但您在Vivado HLS中不能做这种仿真。

在ISE中启动解决方案后,您应给设计分配I/O引脚。随后您可在ISE Project Navigator中选择“Generating Programming File”以生成比特流。

在这一练习中,我们一步步完成了Vivado HLS一个实际的端对端流程,并在FPGA上实现算法。对于Vivado HLS中的许多高级特性而言,您应了解您需要什么样的硬件架构,从而进行源代码的调整。如需了解更多详情,《Vivado高层次综合教程》

(UG871;.xilinx./support/documentation/sw_manuals/xilinx2012_2/ug87...)和《Vivado设计套件用户指南》

(UG002; .xilinx./support/documentation/sw_manuals/xil-inx2012_2/ug9...)这两个技术文档对您大有裨益。

欢迎关注Sharad Sinha的博客。阅读更多文章:http://sharadsinha.wordpress.。?Vivado设计套件

?C语言

?FPGA

?Vivado-HLS

?赛灵思

?初级知识库

?要发表评论,请先登录或注册

?417 次点击

软件结构设计规范模板

软件结构设计规范

精选编制: 审核: 批准:

目录 1.简介 (6) 1.1.系统简介 (6) 1.2.文档目的 (6) 1.3.范围 (6) 1.4.与其它开发任务/文档的关系 (6) 1.5.术语和缩写词 (6) 2.参考文档 (8) 3.系统概述 (9) 3.1.功能概述 (9) 3.2.运行环境 (9) 4.总体设计 (10) 4.1.设计原则/策略 (10) 4.2.结构设计 (10) 4.3.处理流程 (10) 4.4.功能分配与软件模块识别 (11) 5.COTS及既有软件的使用 (12) 5.1.COTS软件的识别 (12) 5.2.COTS软件的功能 (12)

5.3.COTS软件的安全性 (12) 5.4.既有软件的识别 (12) 5.5.既有软件的功能 (13) 5.6.既有软件的安全性 (13) 6.可追溯性分析 (14) 7.接口设计 (15) 7.1.外部接口 (15) 7.2.内部接口 (15) 8.软件设计技术 (16) 8.1.软件模块 (16) 8.2.数据结构 (16) 8.3.数据结构与模块的关系 (16) 9.软件故障自检 (17)

1.简介 1.1.系统简介 提示:对系统进行简要介绍,包括系统的安全目标等。 1.2.文档目的 提示: 软件结构设计的目的是在软件需求基础上,设计出软件的总体结构框架,实现软件模块划分、各模块之间的接口设计、用户界面设计、数据库设计等等,为软件的详细设计提供基础。 软件结构设计文件应能回答下列问题: 软件框架如何实现软件需求; 软件框架如何实现软件安全完整度需求; 软件框架如何实现系统结构设计; 软件框架如何处理与系统安全相关的对软/硬件交互。 1.3.范围 1.4.与其它开发任务/文档的关系 提示:如软件需求和界面设计文档的关系 1.5.术语和缩写词 提示:列出项目文档的专用术语和缩写词。以便阅读时,使读者明确,从

基于FPGA的DDS设计

一、实验名称:基于F P G A的D D S信号源设计 二、技术规范: 1.实验目标: 设计一个直接数字频率合成(DDS,Direct Digital Synthesis),DDS是一种新型的频率合成技术。DDS 技术是一种把一系列数字形式的信号通过DAC 转换成模拟信号的合成技术。 DDS 技术具有频率切换时间短,频率分辨率高,频率稳定度高,输出信号的频率和相位可以快速切换,输出相位可连续,并且在改变时能够保持相位的连续,很容易实现频率、相位和幅度的数字控制。它在相对带宽、频率转换时间、相位连续性、高分辨率以及集成化等一系列性能指标方面远远超过了传统频率合成技术。 因此在现代电子系统及设备的频率源设计中,尤其在通信领域,直接数字频率合成器的应用越来越广泛。 2.实现功能: 本实验最后将设计出一个具有频率控制和相位移控制功能的DDS。 3.引脚: 本实验有三个输入端口,8位的频率控制字端口,分别接8个开关按键,8位的相位控制字端口,分别接另外的8个开关按键,系统时钟输入端口;一个8位输出端口,接D/A的输入端口。FPGA板上的时钟频率为50MHz,本实验将其10分频后得到5MHz再使用。 三.总体设计方案; 原理: 实验采用目前使用最广泛的一种DDS 方式是利用高速存储器作查找表,然后通过高速DAC 输出已经用数字形式存储的波形。 图1:DDS 系统的基本原理图 图1中虚方框部分是DDS 的核心单元,它可以采用CPLD/FPGA 来实现。图中的相位累加器由N位全加器和N位累加寄存器级联而成,可对频率控制字的二进制码进行累加运算,是典型的反馈电路。 频率控制字M和相位控制字分别控制DDS 输出正(余)弦波的频率和相位。每来一个时钟脉冲,相位寄存器以步长M递增。相位寄存器的输出与相位控制字相加,其结果作为正(余)弦查找表的地址。正(余)弦查找表的数据存放在ROM中,内部存有一个周期的正弦波信号的数字幅度信息,每个查找表的地址对应于正弦波中0°~360°范围内的一个相位点。查找表把输入的址信息映射成正(余)弦波的数字幅度信号,同时输出到数模转换器DAC 的输入端,DAC输出的模拟信号经过低通滤波器(LPF),可得到一个频谱纯净的正(余)弦波。 DDS 具体工作过程如下:每来一个时钟脉冲clk,N 位全加器将频率控制数据M 与累加寄存器输出的累加相位数据N 相加,把相加后的结果送至累加寄存器的输入端。累加寄存器一方面将上一时钟周期作用后所产生的新的数据反馈到加法器的输入端,以使加法器在下一时钟的作用下继续与频率控制数据M 相加;另一方

fpga数字钟课程设计报告

f p g a数字钟课程设计报告 Prepared on 24 November 2020

课程设计报告 设计题目:基于FPGA的数字钟设计 班级:电子信息工程1301 姓名:王一丁 指导教师:李世平 设计时间:2016年1月 摘要 EDA(Electronic Design Automation)电子设计自动化,是以大规模可编程器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,通过相关的软件,自动完成软件方式设计得电子系统到硬件系统,最终形成集成电子系统或专用集成芯片。本次课程设计利用Quartus II 为设计软件,VHDL为硬件描述语言,结合所学知识设计一个多功能时钟,具有显示年、月、日、时、分、秒显示,计时,整点报时,设定时间等功能。利用硬件描述语言VHDL 对设计系统的各个子模块进行逻辑描述,采用模块化的思想完成顶层模块的设计,通过软件编译、逻辑化简、逻辑综合优化、逻辑仿真、最终完成本次课程设计的任务。 关键词:EDA VHDL语言数字钟 目录 摘要 1 课程设计目的 2 课程设计内容及要求

设计任务 设计要求 3 VHDL程序设计 方案论证 系统结构框图 设计思路与方法 状态控制模块 时分秒模块 年月日模块 显示模块 扬声器与闹钟模块 RTL整体电路 4 系统仿真与分析 5 课程设计总结,包括.收获、体会和建议 6 参考文献 1 课程设计目的 (1)通过设计数字钟熟练掌握EDA软件(QUARTUS II)的使用方法,熟练进行设计、编译,为以后实际工程问题打下设计基础。 (2)熟悉VHDL 硬件描述语言,提升分析、寻找和排除电子设计中常见故障的能力。 (3)通过课程设计,锻炼书写有理论根据的、实事求是的、文理通顺的课程设计报告。

Xilinx ISE 13.4软件使用方法

Xilinx ISE 13.4软件使用方法 本章将以实现一个如图所示的4为加法器为例,来介绍Xilinx ISE13.4开发流程,并且最终下载到实验板BASYS2中运行。 1 A 1 1.建立工程 运行Xilinx ISE Design Suite 13.4,初始界面如图F2所示 F1软件初始状态表 选择File->New Project ,该对话框显示用向导新建工程所需的步骤。 在Name 栏中输入工程名称(注意:以下所有不能含有中文字符或空格),如“test”。在Location 栏中选择想要存放的工程位置,如“E:\code\Xilinx\test”。顶层语言选项栏中选择“HDL”语言。设置向导最终设置效果如图F2所示 F2路径信息设置表

点击“Next”,进入芯片型号选择界面。在本界面中,根据BASYS2实验板上的芯片型号进行相关设置,设置效果如图F3所示。 F3芯片信息选择表 点击“Next”,出现如图F4所示工程信息汇总表格。 F4工程信息汇总表 点击“Finish”完成设置。

2新建Verilog文件 在F5所示界面中,如图所示的区域内右击鼠标,选择“New Source”,出现F6对话框。 F5 在File name栏中键入verilog文件的名称,如“test”。 F6 点击“Next”,在本界面中将设置加法器的输入输出引脚数量,如图F1所示的加法器共有A、B、C0、S和C1,5组引脚,其中A、B和S为4位总线形式,因此设置结果如图F7所示。

F7 点击“Next”,出现Verilog新建信息汇总表。 F8 点击“Finish”,完成Verilog新建工作。 3逻辑设计 输入代码

软件架构设计说明书

软件架构设计说明书 The final edition was revised on December 14th, 2020.

架构设计说明书 版本1.0.0

目录

1.引言 [对于由多个进程构成的复杂系统,系统设计阶段可以分为:架构设计(构架设计)、组件高层设计、组件详细设计。对于由单个进程构成的简单系统,系统设计阶段可以分为:系统概要设计、系统详细设计。本文档适用于由多个进程构成的复杂系统的构架设计。] [架构设计说明书是软件产品设计中最高层次的文档,它描述了系统最高层次上的逻辑结构、物理结构以及各种指南,相关组件(粒度最粗的子系统)的内部设计由组件高层设计提供。] [系统:指待开发产品的软件与硬件整体,其软件部分由各个子系统嵌套组成,子系统之间具有明确的接口; 组件:指粒度最粗的子系统; 模块:指组成组件的各层子系统,模块由下一层模块或函数组成;] [此文档的目的是: 1)描述产品的逻辑结构,定义系统各组件(子系统)之间的接口以及每个组件(子系统)应该实现的功能; 2)定义系统的各个进程以及进程之间的通信方式; 3)描述系统部署,说明用来部署并运行该系统的一种或多种物理网络(硬件)配置。对于每种配置,应该指出执行该系统的物理节点(计算机、网络设备)配置情况、节点之间的连 接方式、采用何种通信协议、网络带宽。另外还要包括各进程到物理节点的映射; 4)系统的整体性能、安全性、可用性、可扩展性、异常与错误处理等非功能特性设计; 5)定义该产品的各个设计人员应该遵循的设计原则以及设计指南,各个编程人员应该遵循的编码规范。 ] [建议架构设计工程师与组件设计工程师共同完成此文档。] [架构设计说明书的引言应提供整个文档的概述。它应包括此文档的目的、范围、定义、首字母缩写词、缩略语、参考资料和概述。]

基于FPGA的设计题目

1.花样彩灯控制器的设计 设计要求: 假设输入脉冲为3MHz,控制16只LED发光二极管每隔1s或2s显示一种花样。要求显示的花样如下:闪烁2次从LED(0)移位点亮到LED(15)一次全部点亮一次从LED(15)开始逐个熄灭至LED(0)1次闪烁2次。。。。。。如果按下清零键时,16只LED均熄灭一次,然后再重新按规律显示。如果没有按下快/慢选择控制键时,16只LED发光二极管是以每隔1s进行花样显示,否则按下快/慢键选择控制键时,16只LED发光二极管是以每隔2s进行花样显示。 2.利用FPGA实现一个简单的DDS正弦波发生器 (DDS:数字显示示波器) 可分解为三个部分来设计:时钟产生模块;地址产生模块;ROM查找表模块。 实现思路: ①首先,由外部晶振引入40MHz的时钟到FPGA内部,进入时钟产生模块,对时钟进行处理并3倍频程后,得到一个稳定精确的120MHz的系统时钟; ②然后,地址产生模块在系统时钟的激励下,将频率控制字与累加寄存器输出的数据进行累加,然后把累加的结果作为地址输出给ROM查找表地址; ③最后,ROM查找表模块在每个系统时钟的上升沿,按照地址来读取ROM 查找表中的相应的波形采样点数据并输出,该数就是最终的DDS信号。 3.多功能信号发生器的设计 设计要求: 设计一个多功能信号发生器,能够以稳定的频率产生锯齿波、增减锯齿波、三角波、阶梯波、正弦波和方波等六种信号。系统有3个波形选择开关和一个复位开关,通过波形选择开关可以选择以上各种不同种类的输出波形;按下复位开关时,系统将复位。 设计实现: 由于FPGA只能直接输出数字信号,而多功能信号发生器输出的各种波形

FPGA设计的报告课程设计

FPGA课程设计 实 验 报 告

实验一:设计一个可控的100进制可逆计数器 一、实验要求 用DE2-115开发板下载。 (1)计数器的时钟输入信号周期为200ns。 (2)以十进制形式显示。 (3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用 clr plus minus 功能 0 ××复位为0 1 1 0 递增计数 1 0 1 递减计数 1 1 1 暂停计数 二、关键词 可控制、可逆、100进制、复位、暂停、递增、递减 三、内容摘要 module updown_count(qout,reset,clk,plus,minus); output[7:0] qout;/*定义一个8位的输出,其目的是 低四位和高四位分别表示计数器的个位和十位。*/ input clk,plus,minus,reset;//定义四个输入,时钟,加计数,减计数和清零 reg[7:0] qout;//qout的数据类型为寄存器型 always @(posedge clk)//当clk上升沿到来时执行一遍下列程序 begin if(!reset) qout<=0;//当reset为低电平时,计数器执行清零功能,否则跳过else begin case({minus,plus})//case语句模块,包含加,减和暂停四个模块 2'b10: if (qout[3:0]==0)//判断个位是否为零,若不为零,跳到个位减一begin qout[3:0]<=9;//给个位赋值 if(qout[7:4]==0) qout[7:4]<=9;//判断十位是否为零,并且给十位赋值 else qout[7:4]<=qout[7:4]-1;//由于个位赋9,相当于向十位借一,因而十位减一end else qout[3:0]<=qout[3:0]-1;//个位减一 /*这一部分是减计数模块,其思路是:首先判断个位是否为零,若为零,则执行后面的程序,个位直接赋9,并且十位减一;否则个位减一*/ 2'b01: if (qout[3:0]==9)//判断个位是否为9,否则跳到个位加一begin

赛灵思(Xilinx)FPGA用户约束文件的分类和语法说明

赛灵思(Xilinx)FPGA用户约束文件的分类和语法说明 FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF文件)以及物理约束文件(.PCF文件),可以完成时序约束、管脚约束以及区域约束。3类约束文件的关系为:用户在设计输入阶段编写UCF文件,然后UCF文件和设计综合后生成NCF文件,最后再经过实现后生成PCF 文件。UCF文件是ASC 2码文件,描述了逻辑设计的约束,可以用文本编辑器和Xilinx约束文件编辑器进行编辑。NCF约束文件的语法和UCF文件相同,二者的区别在于:UCF文件由用户输入,NCF文件由综合工具自动生成,当二者发生冲突时,以UCF文件为准,这是因为UCF的优先级最高。PCF文件可以分为两个部分:一部分是映射产生的物理约束,另一部分是用户输入的约束,同样用户约束输入的优先级最高。一般情况下,用户约束都应在UCF文件中完成,不建议直接修改NCF文件和PCF文件。约束文件的后缀是.ucf,所以一般也被称为UCF文件。创建约束文件有两种方法,一种是通过新建方式,另一种则是利用过程管理器来完成。第一种方法:新建一个源文件,在代码类型中选取ImplementaTIon Constrains File,在File Name中输入约束文件的名称。单击Next按键进入模块选择对话框,选择要约束的模块,然后单击Next进入下一页,再单击Finish按键完成约束文件的创建。第二种方法:在工程管理区中,将Source for设置为Synthesis/ImplementaTIon。Constrains Editor是一个专用的约束文件编辑器,双击过程管理区中User Constrains下的Create TIming Constrains就可以打开Constrains Editor。需要注意的是,UCF文件是大小敏感的,端口名称必须和源代码中的名字一致,且端口名字不能和关键字一样。但是关键字NET是不区分大小写的。UCF文件的语法说明:1.语法UCF文件的语法为:{NET|INST|PIN} signal_name Attribute;其中,signal_name是指所约束对象的名字,包含了对象所在层次的描述;Attribute为约束的具体描述;语句必须以分号;结束。可以用#或添加注释。需要注意的是:UCF文件是大小写敏感的,信号名必须和设计中保持大小写一致,但约束的关键字可以是大写、小写甚至大小写混合。例如:NET CLK LOC = P30;CLK就是所约束信号名,LOC = P30;是约束具体的含义,将CLK信号分配到FPGA的P30管脚上。对于所有的约束文件,使用与

Fpga工程师要求

FPGA工程师基本要求(zz) 2012-08-01 14:39 FPGA工程师需要掌握哪些知识?这里根据自己的一些心得总结一下,其他朋友可以补充啊。 1.Verilog语言及其于硬件电路之间的关系。 2.器件结构(最好熟练掌握Spartan3,Vertix4系列的器件结构,及其资源于Verilog行为描述方法的关系。)。 3.开发工具(熟练掌握Synplify,Quartus,ISE,Modelsim)。 4.数字电路(组合电路,触发器,特别是D触发器构成分频器,奇数倍分频占空比为50%,时序电路,并且能用Verilog语言描叙。)。 5.熟悉FPGA设计流程(仿真,综合,布局布线,时序分析)。 6.熟练掌握资源估算(特别是slice,lut,ram等资源的估算)。 7.同步设计原理。 8.熟练掌握基本概念(如建立时间,保持时间,流量(即所做FPGA设计的波特率)计算,延迟时间计算(所做FPGA设计),竞争冒险,消除毛刺的方法等等)。 9.具备具体设计经验(对应届生而言如毕业设计)。 10.良好的设计思路(流水线设计即熟称打拍子,在速率资源功耗之间的折中考虑)。一个合格的FPGA工程师至少在以下三个方面的一个非常熟悉: 1.嵌入式应用 2.DSP应用 3.高速收发器应用 将自己的走过的弯路和总结的经验与大家分享一下,希望对您有一点点的参考价值。首先从先从如何成为一个合格的设计者说起吧!初学者觉得一切都是挑战,一切都新鲜,不知从何处下手。我总结了学习EDA逻辑设计的4个步骤,请拍砖! 1。首先,应该好好学习一下FPGA/CPLD的设计设计流程。 不要简单的以为就是设计输入-》仿真-》综合-》实现那么一回事,要抠细,要学精,要多问每个步骤的注意事项,区分相关步骤的联系和区别。比如要搞清楚功能仿真、综合后仿真、Translate后仿真、Map后的仿真、布局布线后仿真的作用都是什么,什么时候应该做,什么时候可以不做这些仿真!学习清楚了设计流程最大的好处就是有利于培养良好的EDA 设计习惯,日后会受益非浅! 2。关于设计输入和Coding Style。 设计输入最好学习HDL语言,Verilog、VHDL都可以,可以把状态机输入和原理图输入作为补充内容,但不是重点。我在前面的帖子已经反复强调了 Coding Style的重要性。因为它是逻辑设计人员的一个基本业务素质。而且Coding Style不是看几篇文章,学几条原则就能够成为高手的,他需要您在工作中不断的体会和积累,在学习的最初,有Coding Style的意识,设计者就会有意的积累,对日后发展很有好处。反之则后患无穷。 3。培养硬件的意识,培养系统的观念。 我也在交流和授课的时候很强调硬件意识,如果从形式上看,逻辑设计随着智能化和优化手段的不断发展最后会越来越灵活,越来越简单。比如我们现在在使用大型 FPGA时就很少谈如何用Floorplanner优化,手动布线,如果用手动方式,其工作量太大了啊!一个设计的优劣,关键看其设计者的硬件意识,和系统意识。硬件意识就是要求先做到对设计的硬件胸

FPGA课程设计报告

F P G A 课 程 设 计 报 告 学部:信息科学与技术学部 专业:通信工程 班级:10级1班 学号:100103011125 姓名:万洁 指导老师:祝宏 合作伙伴:张紫君 2012.12.13

一.《任务书》: 实验一100进制的可逆计数器(11——12周)实验二交通灯控制系统(15周) 实验三多功能数字钟系统(14-15周)二.实验书写格式: 一:题目要求 二:程序代码 三:操作步骤及运行结果截图 四:心得体会 三.实验附录: 一:老师提供的资源 二:关于实验所用EP4CE115F29板的简介

实验一100进制的可逆计数器 一、设计一个可控的100进制可逆计数器,要求用实验箱下载。 (1)计数器的时钟输入信号周期为200ns。 (2)以十进制形式显示。 (3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。 clr plus minus 功能 0 ××复位为0 1 1 0 递增计数 1 0 1 递减计数 1 1 1 暂停计数 二、程序如下: module keni100(CLR,CLK,PLUS,MINUS,OUT); //100进制的可逆计数器 input CLR,PLUS,MINUS,CLK; output [7:0]OUT; reg [7:0]OUT; always@(posedge CLK) begin if(!CLR) //如果CLR为零,输出为零;反之,运行else程序 OUT[7:0]<=0; else

begin if(PLUS==0 && MINUS==1) //100进制的递减计数 begin if (OUT[3:0]==0) begin OUT[3:0]<=9; if (OUT[7:4]==0) OUT[7:4]<=9; else OUT[7:4]<=OUT[7:4]-1; end else OUT[3:0]<=OUT[3:0]-1; end if(PLUS==1 && MINUS==0) //100进制的递增计数 begin if (OUT[3:0]==9) begin OUT[3:0]<=0; if (OUT[7:4]==9) OUT[7:4]<=0; else OUT[7:4]<=OUT[7:4]+1; end else OUT[3:0]<=OUT[3:0]+1; end if(PLUS==1 && MINUS==1) OUT<=OUT; //若PLUS和MINUS都为1,暂停计数 if(PLUS==0 && MINUS==0) OUT<=0; //若都为零,输出为零end end endmodule 三、运行程序 1、在quarters II9.1输入程序 打开quarters II界面,点击file→New,在出现的对话框,如图1.1所示,选择Text File,点击OK.

Xilinx ISE Design Suite 13.4 软件使用流程(EDK和SDK部分)

Xilinx ISE Design Suite 13.4 软件使用流程 (EDK与SDK部分) ISE的全称为Integrated Software Environment,即“集成软件环境”,是Xilinx公司的硬件设计工具。相对容易使用的、首屈一指的PLD设计环境!ISE将先进的技术与灵活性、易使用性的图形界面结合在一起,不管您的经验如何,都让您在最短的时间,以最少的努力,达到最佳的硬件设计。 EDK=Embedded Development Kit,嵌入式开发套件。EDK是xilinx公司开发嵌入式系统的工具。比起xilinx的ISE,二者不同在于,如果仅仅是使用xilinx的fpga做逻辑设计,只需要ISE开发环境。但是如果要使用powerpc或者microblaze处理器,从硬件到软件设计的整个嵌入式系统设计,就需要EDK。 SDK(Software Development Kit, 即软件开发工具包)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 我是一个刚刚接触Xinlinx公司开发的fpga。在对软件使用中遇到很多问题,在网上很难找到完全匹配的教程。特别是在EDK的使用过程中,网上流传的教程都是基于老版本的。步骤上有一些差异,对初学者来说往往不知所云,官网上的英文资料也存在一定的理解问题。因此在此介绍一些EDK的使用步骤。在老版本的EDK中。硬件逻辑和软件工程是在一个EDK软件中的。而版本比较新一点的,需要EDK硬件工程部分和SDK软件工程部分结合使用。 以下为具体的使用步骤,在解说的过程中不免出现错误。还希望朋友们给以宝贵的意见。 1.首先点击电脑中的Xilinx Platform Studio 快捷方式,打开EDK软件。如果桌面上没有快捷方式,也可以在开始——所有程序----Xilinx ISE Design Suite 13.4——EDK——Xilinx Platform Studio。图标如下图中间完整的显示。

软件架构设计文档模板

广州润衡软件连锁有限公司软件架构设计文档 项目名称 软件架构设计文档 版本

修订历史记录

目录 1.简介5 1.1目的5 1.2范围5 1.3定义、首字母缩写词和缩略语5 1.4参考资料5 1.5概述5 2.整体说明5 2.1简介5 2.2构架表示方式5 2.3构架目标和约束5 3.用例视图6 3.1核心用例6 3.2用例实现6 4.逻辑视图6 4.1逻辑视图6 4.2分层6 4.2.1应用层6 4.2.2业务层7 4.2.3中间层7 4.2.4系统层7 4.3架构模式7 4.4设计机制7 4.5公用元素及服务7 5.进程视图7 6.部署视图7 7.实施视图8 7.1概述8 7.2层8 7.3部署8 8.数据视图8 9.大小和性能8

软件架构设计文档 10.质量8 11.其它说明8 12.附录A 指南8 13.附录B 规范9 14.附录C 模版9 15.附录D 示例9

软件架构设计文档 1.简介 软件构架文档的简介应提供整个软件构架文档的概述。它应包括此软件构架文档的目的、范围、定义、首字母缩写词、缩略语、参考资料和概述 1.1目的 本文档将从构架方面对系统进行综合概述,其中会使用多种不同的构架视图来描述系统的各个方面。它用于记录并表述已对系统的构架方面作出的重要决策 本节确定此软件构架文档在整个项目文档中的作用或目的,并对此文档的结构进行简要说明。应确定此文档的特定读者,并指出他们应该如何使用此文档 1.2范围 简要说明此软件构架文档适用的范围和影响的范围 1.3定义、首字母缩写词和缩略语 本小节应提供正确理解此软件构架文档所需的全部术语的定义、首字母缩写词和缩略语。这些信息可以通过引用项目词汇表来提供 1.4参考资料 本小节应完整地列出此软件构架文档中其他部分所引用的所有文档。每个文档应标有标题、报告号(如果适用)、日期和出版单位。列出可从中获取这些参考资料的来源。这些信息可以通过引用附录或其他文档来提供 1.5概述 本小节应说明此软件构架文档中其他部分所包含的内容,并解释此软件构架文档的组织方式 2.整体说明 2.1简介 在此简单介绍软件架构的整体情况,包括用例视图、逻辑视图、进程视图、实施视图和部署视图的简单介绍。另外,简要介绍各种视图的作用和针对的用户 2.2构架表示方式 本节说明当前系统所使用的软件构架及其表示方式。还会从用例视图、逻辑视图、进程视图、部署视图和实施视图中列出必需的那些视图,并分别说明这些视图包含哪些类型的模型元素 2.3构架目标和约束 本节说明对构架具有某种重要影响的软件需求和目标,例如:安全性、保密性、市售产品的使用、可移植

赛灵思ZYNQ-7000架构

赛灵思ZYNQ-7000架构 该文章的硬件平台是:ZC702(XC7Z020-1CLG484CES )。所用软件包括:PlanAhead、Xilinx Platform Studio、Xilinx Software Development Kit,版本均为14.4。串口工具为Tera Term。 ZYNQ-7000是Xilinx推出的一款全可编程片上系统(All Programmable SoC),该芯片集成了ARM Cortex A9双核与FPGA,所以ZYNQ是一款SoPC芯片。其架构如下图: 图中的Processing System(一般简称为PS)即为处理器(ARM Cortex A9 MPCore)部分,里面资源非常的丰富,具体可参看Xilinx官方文档。Programmable Logic(一般简称为PL)即可编程部分(FPGA),该部分的资源随SoC芯片级别高低不同而不同,最低的是ArTIx-7(Zynq-7010和Zynq-7020),最高的是Kintex-7(Zynq-7030和Zynq-7045)。当然,后续可能SoC中的FPGA会使用更高的Virtex系列,这个就不得而知了。 PS和PL的关系:PS的实质就是一个ARM Cortex A9 MPcore,所以如果我们不使用可编程部分,我们完全可以只使用PS部分。也就是说,对于ZYNQ芯片,PS部分可以完全独立使用,不依赖PL部分。 PL部分的实质是Xilinx FPGA。在ZYNQ中,我们可以把PL看成是PS的另一个具有可重配置特点的外设,它可以作为PS部分的一个从设备,受ARM处理器控制。比如ARM (PS)的串口数量不够时,以太网接口不够时,或者需要视频接口时都可以用PL部分扩展。当然我们也可以把PL部分看成一个不受ARM处理器控制,与ARM处理器对等的主设备,主动完成与外部芯片、接口的数据交互。更甚至PL部分也可以作为整个系统的主设备,主动从APU部分的存储器中获取、存储数据,并可控制ARM处理器的运算。所以,理论上PL部分也可以像PS部分那样独立运行。但限制是必须使用JTAG接口对PL 部分进行配置。如果没有JTAG接口,就无法独立运行,因为ZYNQ的PS部分和PL部分都必须依靠PS来完成芯片的初始化配置。 随着嵌入式系统越来越复杂,功能越来越强大,往往在设计中既需要非常灵活的FPGA,

一个合格的FPGA工程师需要掌握哪些知识

一个合格的FPGA工程师需要掌握哪些知识?这里根据自己的一些心得总结一下,其他朋友可以补充啊。 1.Verilog语言及其于硬件电路之间的关系。 2.器件结构(最好熟练掌握Spartan3,Vertix4系列的器件结构,及其资源于Verilog行为描述方法的关系。)。 3.开发工具(熟练掌握Synplify,Quartus,ISE,Modelsim)。 4.数字电路(组合电路,触发器,特别是D触发器构成分频器,奇数倍分频占空比为50%,时序电路,并且能用Verilog语言描叙。)。 5.熟悉FPGA设计流程(仿真,综合,布局布线,时序分析)。 6.熟练掌握资源估算(特别是slice,lut,ram等资源的估算)。 7.同步设计原理。 8.熟练掌握基本概念(如建立时间,保持时间,流量(即所做FPGA设计的波特率)计算,延迟时间计算(所做FPGA设计),竞争冒险,消除毛刺的方法等等)。 9.具备具体设计经验(对应届生而言如毕业设计)。 10.良好的设计思路(流水线设计即熟称打拍子,在速率资源功耗之间的折中考虑)。 一个合格的FPGA工程师至少在以下三个方面的一个非常熟悉: 1.嵌入式应用 2.DSP应用 3.高速收发器应用 将自己的走过的弯路和总结的经验与大家分享一下,希望对您有一点点

的参考价值。 首先从先从如何成为一个合格的设计者说起吧!初学者觉得一切都是挑战,一切都新鲜,不知从何处下手。我总结了学习EDA逻辑设计的4个步骤,请拍砖! 1。首先,应该好好学习一下FPGA/CPLD的设计设计流程。 不要简单的以为就是设计输入-》仿真-》综合-》实现那么一回事,要抠细,要学精,要多问每个步骤的注意事项,区分相关步骤的联系和区别。比如要搞清楚功能仿真、综合后仿真、Translate后仿真、Map 后的仿真、布局布线后仿真的作用都是什么,什么时候应该做,什么时候可以不做这些仿真!学习清楚了设计流程最大的好处就是有利于培养良好的EDA设计习惯,日后会受益非浅! 2。关于设计输入和Coding Style。 设计输入最好学习HDL语言,Verilog、VHDL都可以,可以把状态机输入和原理图输入作为补充内容,但不是重点。我在前面的帖子已经反复强调了Coding Style的重要性。因为它是逻辑设计人员的一个基本业务素质。而且Coding Style不是看几篇文章,学几条原则就能够成为高手的,他需要您在工作中不断的体会和积累,在学习的最初,有Coding Style的意识,设计者就会有意的积累,对日后发展很有好处。反之则后患无穷。 3。培养硬件的意识,培养系统的观念。 我也在交流和授课的时候很强调硬件意识,如果从形式上看,逻辑设计随着智能化和优化手段的不断发展最后会越来越灵活,越来越简单。比

基于FPGA的VGA显示设计报告

正文 一,VGA时序标准 VGA是一种常用的显示输出接口,采用行场扫描控制结合RGB三色合成原理,输出 显示信号。每个VGA接口为15针接口,分三行排布,每行5针。如图所示: 图1.1 VGA接口 15针并未全部使用,有效的信号线共5根,即红绿蓝三基色信号线:R,G,B,每线电压从0V到0.71V变化,表示无色到饱和,依据电平高低,显示颜色的饱和程度。行同步控制信号,Hsync,控制每行扫描像素的有效和失效。场同步:Vsync,控制场方向,即整个图像显示过程的时间长度,场同步中的显示部分的时间长度,等于每行扫描时间的总和。 在不同刷新频率下,显示每个像素的时间是不同的,相同刷新频率下,每个像素显示时间是固定的,所以,不同的每个像素写入时间,导致了分辨率的不同。因为VGA的显示是逐行扫描,每行从左到右扫描,到了行尾,回归到下一行的行头,继续向尾部扫描。所以,显示原理是逐次写入每行的像素数据,直到整幅图像显示成功为止。 VGA显示的数据是不能锁存的,所以必须一次又一次的连续输入数据,72Hz的刷新率下,一秒钟显示72幅图像,所以,需要连续写入72幅图像,才能达到一秒的显示效果。所以,VGA显示图像,要反反复复写入图像数据,才能得到持续的显示效果。 图1.2 VGA接口线序 VGA显示,无法做到类似于TFT液晶屏的定点写入,VGA是扫描式暂时显示,所以时序显得尤为重要,时序出现失误,图像会出现走形,无法达到准确效果。而显示的时序控制主要依靠两条数据通道:行同步和场同步,即Hsync和Vsync,其控制了扫描显示的起点和终点,同时控制扫描起点的时间,通过时间的控制,达到确定的显示效果。 具体的控制时序图如下:

软件详细设计文档实用模板(最全面)

Xxx系统 详细设计说明书 (内部资料请勿外传) 编写:日期:检查:日期:审核:日期:批准:日期: XX公司 版权所有不得复制 文档变更记录

目录 1. 引言 (5) 1.1 编写目的和范围 (5) 1.2 术语表 (5) 1.3 参考资料 (5) 1.4 使用的文字处理和绘图工具 (5) 2. 全局数据结构说明 (7) 2.1 常量 (7) 2.2 变量 (8) 2.3 数据结构 (8) 3. 模块设计 (9) 3.1 用例图 (9) 3.2 功能设计说明 (10) 3.2.1 模块1 (10) 3.2.2 模块2 (11) 4. 接口设计 (12) 4.1 内部接口 (12) 4.2 外部接口 (12) 4.2.1 接口说明 (12) 4.2.2 调用方式 (12) 5. 数据库设计 (12) 6. 系统安全保密设计 (12) 6.1 说明 (12) 6.2 设计 (12) 6.2.1 数据传输部分 (12) 6.2.2 IP过滤分部 (13) 6.2.3 身份验证部分 (13) 7. 系统性能设计 (13) 8. 系统出错处理 (13)

1.引言 1.1背景 此文档的背景 1.2编写目的和范围 说明写这份详细设计说明书的目的。 本详细设计说明书编写的目的是说明程序模块的设计考虑,包括程序描述、输入/输出、算法和流程逻辑等,为软件编程和系统维护提供基础。本说明书的预期读者为系统设计人员、软件开发人员、软件测试人员和项目评审人员。 1.3术语表 1.4参考资料 列出有关资料的名称、作者、文件编号或版本等。参考资料包括: a.需求说明书、架构设计说明书等; b.本项目的其他已发表的文件; 1.5使用的文字处理和绘图工具 文字处理软件:[编写设计文档使用的文字处理软件,如RedOffice ] 绘图工具:[使用的UML工具,如Rose、Jude、Visio]

赛灵思 ISE 设计套件 11.1 为客户量身打造四种工具流程

赛灵思ISE 设计套件11.1 为客户量身打造四种工具流程 作者:Michael Santarini 随着Xilinx? ISE? 设计套件11.1 的推出,赛灵思在优化设计方法、更好地满足不同技能客户的多样化需求,以及帮助客户利用赛灵思FPGA 目标设计平台进行创新设计方面迈出了一大步。赛灵思ISE 设计套件11.1同时推出四种全新的工具流程,专为逻辑设计人员、嵌入式开发人员、DSP算法开发人员以及系统集成人员量身定制,以满足他们的不同要求。

? 2009 年赛灵思版权所有。Xilinx、Xilinx 徽标、Virtex、Spartan、ISE、以及本文涉及的其它指定品牌均为赛灵思公司在美国及其它国家的商标。MATLAB 以及Simulink 均为The MathWorks 公司的注册商标。PCI、PCle 以及PCI E 为PCI-SIG 的商标,须得到许可后才可使用。PowerPC 名称及徽标为IBM 公司的注册商标,须得到许可才可使用。所有其它商标均归其各自所有者所有。

此前,赛灵思的客户主要是逻辑设计人员,他们是精通硬件设计和硬件描述语言 (HDL) 的电气工程师。不过,在过去 8 年间,随着各代 Virtex? 和 Spartan? FPGA 产品的推出,逻辑单元以及 MPU 和 DSP 等嵌入式软硬件处理器呈指数级增长。在此情况下,赛灵思的客户中迅速增加了大量嵌入式软硬件工程师、DSP 算法开发人员和系统集成人员,他们都使用赛灵思的器件来构建高级片上系统。也就是说,不仅多领域的设计团队在使用赛灵思的器件,而且很多情况下,就连对 HDL 设计不了解或了解甚少的人如今也都在用赛灵思 FPGA 开展系统设计工作。 在推出 ISE 设计套件 11.1之前,赛灵思为所有客户提供了一套完整的工具和 IP 。每个用户可以根据 FPGA 编程的需要选择使用不同的工具。不过,如果客户对逻辑/连接设计不熟悉的话,可能会对众多工具和IP 的选择感到无所适从。举例来说,如果客户不熟悉硬件调试,可能就不了解 ChipScope? Pro 分析器的优点,不知道这款工具能自动完成调试任务,可以帮助用户简化设计工作。为了帮助不同设计领域的用户在熟悉的可定制环境中更高效地开展设计工作,赛灵思现在推出了四种全新的ISE 设计套件配置版本:逻辑版本、嵌入式版本、DSP 版本和系统版本(见图 1)。 图 1:全新工具流程 赛灵思对不同领域的客户进行了认真地调查,了解其设计方法,看看他们会使用赛灵思和第三方合作伙伴提供的哪些工具成功进行赛灵思 FPGA 设计工作。

FPGA课程设计报告

2014年FPGA课程设计 课程设计报告 课程名称:FPGA课程设计 实验名称:直接数字合成器设计 姓名:李思彧 学号: 20114690 班级:电子科11-1 班 指导教师:倪伟 合肥工业大学电子科学与应用物理学院制

一、实验原理 直接数字式频率合成器(DDS)是将先进的数字处理理论与方法引入频率合成的一项新技术,DDS把一系列数字量形式的信号通过数/模转换器转换成模拟量形式的信号。DDS的具体工作过程是由N位相位累加器、N位加法器和N位累加寄存器组成。每来一个时钟脉冲,N位加法器将频率控制字K与N 位累加寄存器输出的累加相位数据相加,并把相加后的结果送至累加寄存器的输入端。累加寄存器一方面将上一时钟周期作用后所产生的新的相位数据反馈到加法器的输入端,使加法器在下一时钟的作用下继续与频率控制字K相加;另一方面将这个值作为取样地址送入幅度/相位转换电路,幅度/相位转换电路根据这个地址输出相应的波形数据。最后经D/A转换器和LPF将波形数据转换成所需要的模拟波形。 图1.直接数字式频率合成的基本框图 1 DDS的设计原理 DDS的原理图如图1所示。DDS实现频率合成主要是通过查表的方式进行的。正弦查询表是一个只读存储器(ROM),以相位为地址,存有1个或多个按0°~360°相位划分幅值的正弦波幅度信息。相位累加器对频率控制字进行累加运算,若需要还可以加入相位控制字,得到的结果作为正弦波查询表的地址。正弦查询表的输出为数字化正弦幅度值,通过D/A转换器转化为近似正弦波的阶梯波,

再通过低通滤波器滤除高频成分和噪声最终得到一个纯正度很高的正弦波。1.1 建模 正弦波y=sin(2πx),若以f量化的量化频率对其幅度值进行量化,一个周期可以得到M=f量化个幅度值。将这些幅度值按顺序存入到ROM。相位累加器在参考时钟的驱动下,每来1个脉冲,输出就会增加1个步长相位增量X,输出数据作为地址送入ROM中,读出对应的幅度值形成相应的波形。 1.2 参数设定 DDS输出信号频率: 其中,X为频率累加器设定值;N为相位累加器位数;fc为参考时钟频率。 例如,假定基准时钟为200 MHz,累加器的位数为32,频率控制字X 为: 0x08000000H,即为227,则: 再设定频率控制字X为0x80000000H,即为231,则: 可见,理论上通过设定DDS相位累加器位数N、频率控制字X和基准fc的值,就可以得到任一频率的输出。频率分辨率为:fres=fc/2N,由参考时钟和累加器的位数决定,当参考时钟的频率越高,相位累加器的位数越高,所得到的频率分辨率就越高。

软件工程文档模板(完整规范版)

软件工程文档模板 目录 1.范围 (1) 2.总体要求 (1) 2.1总体功能要求 (1) 2.2软件开发平台要求 (1) 2.3软件项目地开发实施过程管理要求 (2) 2.3.1软件项目实施过程总体要求 (2) 2.3.2软件项目实施变更要求 (2) 2.3.3软件项目实施里程碑控制 (2) 3.软件开发 (3) 3.1软件地需求分析 (3) 3.1.1需求分析 (3) 3.1.2需求分析报吿地编制者 (4) 3.1.3需求报吿评审 (4) 3.1.4需求报吿格式 (4) 3.2软件地概要设计 (4) 3.2.1概要设计 (4) 3.2.2编写概要设计地要求 (4) 3.2.3概要设计报吿地编写者 (4) 3.2.4概要设计合需求分析、详细设计之间地关系合区别 (4) 3.2.5概要设计地评审 (4) 3.2.6 概要设计格式 (4) 3.3软件地详细设计 (5) 3.3.1详细设计 (5) 3.3.2特例 (5) 3.3.3详细设计地要求 (5) 3.3.4数据库设计 (5) 3.3.5详细设计地评审 (5) 3.3.6详细设计格式 (5) 3.4软件地编码 (5) 3.4.1软件编码 (5) 3.4.2软件编码地要求 (5) 3.4.3编码地评审 (6) 3.4.4编程规范及要求 (6) 3.5软件地测试 (6)

3.5.1软件测试 (6) 3.5.2测试计划 (6) 3.6软件地交付准备 (6) 361交付清单 (6) 3.7软件地鉴定验收 (7) 3.7.1软件地鉴定验收 (7) 3.7.2验收△员 (7) 3.7.3验收具体内容 (7) 3.7.4 软件验收测试大纲 (7) 3.8培训 (7) 3.8.1系统应用培训 (7) 3.8.2系统管理地培训(可选) (8) 附录A 软件需求分析报吿文档模板 (9) 附录b 软件概要设计报吿文档模板 (21) 附录C 软件详细设计报吿文档模板 (33) 附录D软件数据库设计报吿文档模板 (43) 附录E 软件测试(验收)大纲..................................... 错误!未定义书签。5

相关主题
文本预览
相关文档 最新文档