集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: 小舍YZ

FPGA开发 实用内容

[复制链接]
 楼主| 小舍YZ 发表于 2017-4-7 14:53:46 | 显示全部楼层
在ModelSim 6.2b中完成仿真,其结果如图2-19所示,将不等长的高电平信号整形成宽度为一个时钟周期的脉冲信号。



图2-19 同步电路的仿真结果示意图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-4-7 14:53:59 | 显示全部楼层
其中,如果在时钟的上升沿din="1",则x=1,y=0,dout=x and (not y)=1;如果din="1"超过一个时钟宽度,则x=1,y=1,dout=x and (not y)=0。即使din在时钟周期内出现抖动,也不会影响输出结果,还是被整形成一个时钟宽度。所以不管是长周期信号还是短周期信号,经过同步采样后,有效高电平宽度都等于时钟周期。
 楼主| 小舍YZ 发表于 2017-4-7 14:54:22 | 显示全部楼层
3.同步状态机的Verilog实现

状态机一般包括组合逻辑和寄存器逻辑两部分。组合电路用于状态译码和产生输出信号,寄存器用于存储状态。状态机的下一个状态及输出不仅与输入信号有关,还与寄存器当前状态有关。根据输出信号产生方法的不同,状态机可分为米里(Mealy)型和摩尔(Moore)型。前者的输出是当前状态和输入信号的函数,后者的输出仅是当前状态的函数。在硬件设计时,根据需要决定采用哪种状态机。
•        状态编码
状态编码又称状态分配。通常有多种编码方法,编码方案选择得当,设计的电路可以简单;反之,电路会占用过多的逻辑或速度降低。设计时,须综合考虑电路复杂度和电路性能这两个因素。下面主要介绍二进制编码、格雷编码和独热码。

二进制编码和格雷码都是压缩状态编码。二进制编码的优点是使用的状态向量最少,但从一个状态转换到相邻状态时,可能有多个比特位发生变化,瞬变次数多,易产生毛刺。格雷编码在相邻状态的转换中,每次只有1个比特位发生变化,虽减少了产生毛刺和一些暂态的可能,但不适用于有很多状态跳转的情况。

独热码是指对任意给定的状态,状态向量中只有1位为1,其余位都为0。n状态的状态机需要n个触发器。这种状态机的速度与状态的数量无关,仅取决于到某特定状态的转移数量,速度很快。当状态机的状态增加时,如果使用二进制编码,那么状态机速度会明显下降。而采用独热码,虽然多用了触发器,但由于状态译码简单,节省和简化了组合逻辑电路。独热编码还具有设计简单、修改灵活、易于综合和调试等优点。对于寄存器数量多、而门逻辑相对缺乏的FPGA器件,采用独热编码可以有效提高电路的速度和可靠性,也有利于提高器件资源的利用率。独热编码有很多无效状态,应该确保状态机一旦进入无效状态时,可以立即跳转到确定的已知状态。
 楼主| 小舍YZ 发表于 2017-4-7 14:54:57 | 显示全部楼层
•        有限状态机的Verilog实现
用Verilog 语言描述有限状态机可使用多种风格,不同的风格会极大地影响电路性能。通常有3种描述方式:单always块、双always块和三always块。

单always块把组合逻辑和时序逻辑用同一个时序always块描述,其输出是寄存器输出,无毛刺。但是这种方式会产生多余的触发器,代码难于修改和调试,应该尽量避免使用。
        
双always块大多用于描述Mealy状态机和组合输出的Moore状态机,时序always块描述当前状态逻辑,组合逻辑always块描述次态逻辑并给输出赋值。这种方式结构清晰,综合后的面积和时间性能好。但组合逻辑输出往往会有毛刺,当输出向量作为时钟信号时,这些毛刺会对电路产生致命的影响。

三always块大多用于同步Mealy状态机,两个时序always块分别用来描述现态逻辑和对输出赋值,组合always块用于产生下一状态。这种方式的状态机也是寄存器输出,输出无毛刺,并且代码比单always块清晰易读,但是面积大于双always块。随着芯片资源和速度的提高,目前这种方式得到了广泛应用。
 楼主| 小舍YZ 发表于 2017-4-7 14:55:24 | 显示全部楼层
下面以三always块模块给出状态机的Verilog模板。

// 构成状态跳转环
always @(posedge clk or negedge rst_n)
         current_state <= next_state;

// 完成状态机的内部逻辑
always @ (current_state or ) begin
          case(current_state)
                  S1: next_state = S2;
                  S2: next_state = S1;
          default: next_state = S2;
          endcase
end

// 完成状态机的外部逻辑
always @(current_state or ) begin
       case(current_state)
       S1:
       S2:
       default:
       endcase
end
&#8226;         综合状态机的一般原则
在硬件描述语言中,许多基于仿真的语句虽然符合语法规则,但是不能映射到硬件逻辑电路单元,如果要最终实现硬件设计,必须写出可以综合的程序。通常,综合的原则为:
1.        综合之前一定要进行仿真,仿真会暴露逻辑错误。如果不做仿真,没有发现的逻辑错误会进入综合器,使综合的结果产生同样的逻辑错误。  
2.         每一次布线之后都要进行仿真,在器件编程或流片之前一定要进行最后的仿真。  
3.         用Verilog HDL描述的异步状态机是不能综合的,应该避免用综合器来设计。在必须设计异步状态机时,建议用电路图输入的方法
4.        状态机应该有一个异步或同步复位端,以便在通电时将硬件电路复位到有效状态。建议使用异步复位以简化硬件开销。
5.        时序逻辑电路建模时,用非阻塞赋值。用always块写组合逻辑时,采用阻塞赋值。不要在多个always块中为同一个变量赋值。
6.         always块中应该避免组合反馈回路。在赋值表达式右端参与赋值的信号都必须出现在敏感信号列表中,否则在综合时,会为没有列出的信号隐含地产生一个透明锁存器。
 楼主| 小舍YZ 发表于 2017-4-7 14:57:00 | 显示全部楼层
本帖最后由 小舍YZ 于 2017-4-12 13:45 编辑


第3章 基于Xilinx芯片的HDL语言高级进阶

本章主要介绍Verilog语言在Xilinx FPGA芯片开发中的高级应用。(后期补发)


第4章 ISE开发环境使用指南

本章简要介绍ISE的基本操作和开发流程,目的在于简介一些入门知识,更多的技巧和经验需要读者在大量实践中逐步掌握。

第1节 ISE套件的介绍与安装

4.1.1  ISE简要介绍
Xilinx是全球领先的可编程逻辑完整解决方案的供应商,研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及定义系统级功能的IP(Intellectual Property)核,长期以来一直推动着FPGA技术的发展。Xilinx的开发工具也在不断地升级,由早期的Foundation系列逐步发展到目前的ISE 9.1i系列,集成了FPGA开发需要的所有功能,其主要特点有:
&#8226;        包含了Xilinx新型SmartCompile技术,可以将实现时间缩减2.5倍,能在最短的时间内提供最高的性能,提供了一个功能强大的设计收敛环境;
&#8226;        全面支持Virtex-5系列器件(业界首款65nm FPGA);
&#8226;        集成式的时序收敛环境有助于快速、轻松地识别FPGA设计的瓶颈;
&#8226;        可以节省一个或多个速度等级的成本,并可在逻辑设计中实现最低的总成本。
Foundation Series ISE具有界面友好、操作简单的特点,再加上Xilinx的FPGA芯片占有很大的市场,使其成为非常通用的FPGA工具软件。ISE作为高效的EDA设计工具集合,与第三方软件扬长补短,使软件功能越来越强大,为用户提供了更加丰富的Xilinx平台。

4.1.2  ISE功能简介
ISE的主要功能包括设计输入、综合、仿真、实现和下载,涵盖了FPGA开发的全过程,从功能上讲,其工作流程无需借助任何第三方EDA软件。
&#8226;        设计输入:ISE提供的设计输入工具包括用于HDL代码输入和查看报告的ISE文本编辑器(The ISE Text Editor),用于原理图编辑的工具ECS(The Engineering Capture System),用于生成IP Core的Core Generator,用于状态机设计的StateCAD以及用于约束文件编辑的Constraint Editor等。
&#8226;        综合:ISE的综合工具不但包含了Xilinx自身提供的综合工具XST,同时还可以内嵌Mentor Graphics公司的LeonardoSpectrum和Synplicity公司的Synplify,实现无缝链接。
&#8226;        仿真:ISE本身自带了一个具有图形化波形编辑功能的仿真工具HDL Bencher,同时又提供了使用Model Tech公司的Modelsim进行仿真的接口。
&#8226;        实现:此功能包括了翻译、映射、布局布线等,还具备时序分析、管脚指定以及增量设计等高级功能。
&#8226;        下载:下载功能包括了BitGen,用于将布局布线后的设计文件转换为位流文件,还包括了ImPACT,功能是进行设备配置和通信,控制将程序烧写到FPGA芯片中去。
&#8226;        使用ISE进行FPGA设计的各个过程可能涉及到的设计工具如表4-1所示。

表 4-1 ISE设计工具表

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
4798345 发表于 2017-4-7 16:02:35 | 显示全部楼层
楼主v5                             
 楼主| 小舍YZ 发表于 2017-4-12 13:46:04 | 显示全部楼层
4.1.3 ISE软件的安装

E9.1软件安装的基本硬件要求如下:CPU在P III以上,内存大于256M,硬盘大于4G的硬件环境安装。为了更好地使用软件,至少需要512M内存,CPU的主频在2GHz以上。本书使用的集成开发环境是ISE 9.1,仿真工具是ModelSim 6.2b,综合工具为Synplify Pro 8.8。其中ISE、ModelSim软件和Synplify软件不同版本之间的差异不是很大,所以操作和设计结果的差别也是很小的。具体安装过程如下:

1.光盘放进DVD光驱,等待其自动运行(如果没有自动运行,直接执行光盘目录下的Setup.exe文件程序即可),会弹出图4-1所示的欢迎界面,点击“Next”进入下一页。
图4-1 ISE安装过程的欢迎界面

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-4-12 13:46:51 | 显示全部楼层
2.接着进入注册码获取、输入对话框,如图4-2所示。注册码可以通过网站、邮件和传真方式申请注册码。如果已有注册码,输入后单击“Next”按键后继续。
图4-2 ISE9.1安装程序的注册码输入界面

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| 小舍YZ 发表于 2017-4-12 13:47:05 | 显示全部楼层
购买了正版软件后,最常用的方法就是通过网站注册获取安装所需的注册码。首先在Xilinx的官方主页http://www.xilinx.com/上建立自己的帐号,然后点击图4-1中的“Website”按键,登陆帐号,输入CD盒上的产品序列号(序号的格式为:3个字符+9个数字),会自动生成16位的注册码,直接记录下来即可,同时Xilinx网站会将注册码的详细信息发送到帐号所对应的邮箱中。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-10 13:50 , Processed in 0.066875 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表