null基于原理图的
输入基于原理图的设计输入何宾
2010.07第7章 基于原理图的设计输入-本章概要 第7章 基于原理图的设计输入-本章概要 HDL语言的出现使得许多PLD设计都是基于HDL的
设计流程,但是基于原理图的设计也有着重要应用。例
如,对于一个简单数字系统设计而言,顶层文件使用原理
图设计,这样做设计比较直观,容易理解,要比使用HDL
例化语句描述简单。该章还是通过秒表的设计示例介绍基
于原理图的设计流程。
在这里需要说明的是,一个有经验的EDA设计人员,
会使用基于HDL语言、原理图和IP核的混合设计方法完成
设计,这些设计方法可能使用在设计的各个模块中,而不
会只局限在顶层模块中。第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立 在建立工程前,需要将示例文件从光盘上拷到创建工程
的路径下。该设计完成一个比赛用的秒表计时器。(设计
文件通过http://china.xilinx.com/support /techsup /tutoria
ls/tutorials9.htm资源
)。下面给出基于原理图设计流
程的工程建立步骤:
1、在桌面上双击ISE9.2的图标,或者在开始菜单->所
有程序->XilinxISE9.1->Project Navigator。在ISE主界面
中选择File->New Project。如图7.1所示,桌面出现下面
的界面;第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立 2、在Project Location域内,由设计人员给出保存工程
的路径;
3、在Project name域内,由设计人员给出工程名
wtut_sc;
4、在Top-Level Source Type域内,选择原理图
Schematic,单击下一步;
如图7.2所示,桌面出现下面的界面;第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立 5、在Device Properties界面中,选择合适的产品范围
(Product Category)、芯片的系列(Family)、具体的芯
片型号(Device)、封装类型(Package)、速度信息
(Speed),此外,在该界面中还要选择综合工具
(Synthesis Tool)、仿真工具(Simulator)和设计语言
(Preferred Language)。图7.2给出了示例中的参数配置;
6、连续两次用鼠标点击下一步按钮,出现图7.3添加源
文件的界面。在该界面中,第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立第7章 基于原理图的设计输入-工程建立 点击“Add Source”按钮。添加下列文件:cd4rled.sch,
ch4rled.sch,clk_div_262k.v,lcd_control.v,
stopwatch.sch和statmach.dia文件,并单击open按钮,单
击下一步按钮,然后完成新工程的建立;
7、在确认所有设计文件和Synthesis/Imp+Simulation选
项关联后,单击ok;第7章 基于原理图的设计输入-设计描述 第7章 基于原理图的设计输入-设计描述 在该设计中,采用了层次化的、基于原理图的设计方
法。该设计的顶层文件是由原理图生成,而顶层文件下面
的其它模块可以用Verilog HDL语言、原理图或IP核生
成。该设计就是完成一个还未完成的工程。通过这个设计
流程,读者可以完成和产生其它的模块。当设计完成后,
可以通过仿真验证设计的正确性。图7.4给出了该设计完
整的顶层原理图描述。该例子的输入、输出信号和功能模
块与前一章的例子完全一样。第7章 基于原理图的设计输入-设计描述第7章 基于原理图的设计输入-设计描述第7章 基于原理图的设计输入-设计描述第7章 基于原理图的设计输入-设计描述
在这个基于分层的设计中,读者可以建立各种类型的
模块,其中包括基于原理图输入模块、基于HDL输入模块、
基于状态图输入模块和基于IP核输入模块。通过该示例,
EDA设计人员可以详细学习建立每一种模块的方法,并且
学习如何将这些模块连接在一起构成一个完整的设计。第7章 基于原理图的设计输入
-原理图编辑器操作 第7章 基于原理图的设计输入
-原理图编辑器操作 原理图模块由模块符号和符号的连接组成。下面的步骤
将通过ISE的原理图编辑器(Schematic Editor)介绍建立
基于原理图设计time_cnt模块的过程:
1、在ISE主界面下,选择Project->New Source,出现图
7.5的New Source对话框界面。在该界面左边选择
Schematic选项,在File Name中输入time_cnt,单击next按
钮,然后单击Finish按钮,建立新原理图模块;
2、在ISE工作区子窗口,出现原理图编辑窗口,点击鼠
标右键,然后选择Object Properties,将图纸尺寸(Size)
改成D=34x22。点击ok按钮;
通过上面步骤,建立一个time_cnt原理图输入界面;第7章 基于原理图的设计输入-添加I/O符号 第7章 基于原理图的设计输入-添加I/O符号 I/O符号用来确定模块的输入/输出端口,通过下面的步
骤可以创建模块的I/O符号:
1、在原理图编辑器界面内,选择Tools>Create I/O
markers.,显示创建I/O marker对话框;
2、如图7.5所示,在Inputs下输入q(19:0),load, up,ce, clk,
clr,在output下输入hundredths(3:0),tenths(3:0), sec_lsb(3:0),
sec_msb(3:0),minutes(3:0),点击OK;第7章 基于原理图的设计输入-添加I/O符号第7章 基于原理图的设计输入-添加I/O符号第7章 基于原理图的设计输入
-添加原理图元件 第7章 基于原理图的设计输入
-添加原理图元件 通过符号浏览器(Symbol Brower)可以看到对于当前
设计所用芯片可以使用的元件名字和符号(这些符号按字
母顺序排列)。这些元件符号可以用鼠标直接拖到原理图
编辑器中。下面给出添加原理图元件的步骤:
1、在原理图编辑器的界面内,选择Add->Symbol或者
在工具栏中点击Add Symbol图标。如图7.6所示,在原理
图编辑器窗口左边,打开符号浏览器(Symbol Brower)。
在设计路径下,选择cd4rled,该元件是4比特双向可加载
的BCD计数器;第7章 基于原理图的设计输入
-添加原理图元件第7章 基于原理图的设计输入
-添加原理图元件 2、选择cd4rled元件,用鼠标将其拖入编辑器窗口内。
如图7.7所示,再添加3个这样的元件到编辑界面中,同时
添加AND2b1,ch4rled和AND5元件到编辑器窗口内;第7章 基于原理图的设计输入-添加连线 第7章 基于原理图的设计输入-添加连线 1、在元件编辑器界面内,选择Add>wire或者在工具栏
中点击Add wire图标;
2、点击AND2B1的输出,拖动连线到cd4rled元件的CE
引脚。此时在两个引脚之间建立连线;
3、点击AND5元件输出,拖动连线到AND2b1反向输入
引脚。此时在两个引脚之间建立连线;第7章 基于原理图的设计输入-添加连线第7章 基于原理图的设计输入-添加连线第7章 基于原理图的设计输入-添加连线第7章 基于原理图的设计输入-添加连线 4、分别将load,up,clk和clr输入和五个计数器模块的
L,UP,C,R引脚连接,将前一个计数器CE0和下一个计数器
CE连接;
通过以上4个步骤就可以完成元件之间的线连接,下面
将介绍通过总线连接元件的方法。第7章 基于原理图的设计输入-添加总线符号第7章 基于原理图的设计输入-添加总线符号 添加总线包括添加总线符号和与总线连接的比特位的连
接。下面给出建立总线hundredths(3:0), tenths(3:0),
sec_lsb(3:0), sec_msb(3:0)和minutes(3:0)连接的步骤:
1、分别选择上面的总线输出符号;
2、选择Add>wire或者在工具栏中点击Add wire图标,从
这些端口拖出总线连接线,按图7.8所示,引出这些总线
的连接线;第7章 基于原理图的设计输入
-添加总线符号第7章 基于原理图的设计输入
-添加总线符号第7章 基于原理图的设计输入-添加总线符号第7章 基于原理图的设计输入-添加总线符号 3、当添加操作结束时,按ESC键放弃总线连接操作;
4、下面将要把比特端口和总线连接,选择Add>Bus Tap
或者在工具栏中点击Add BusTap图标。
5、从原理图编辑器左边的Option标签中选择--
wire或者在工具栏中点击Add wire图标,
分别从5个计数器的Q0~Q3分别引出四个连接线,注意不
要和Bus Tap连接。第7章 基于原理图的设计输入-添加总线符号第7章 基于原理图的设计输入-添加总线符号 8、在工具条中,选择Add Net Name图标,在原理图编
辑器的Option标签内,选择Name the branch’s net选项,并
输入需要连接的比特端口名字,形式为:总线名字(索引
号),然后将光标移动到相对应比特端口的连接线上,此
时名字就添加在连线上。
9、完成上述总线命名后,将这些比特端口连接线和Bus
Tap标记连接。经过上面的步骤后完成比特端口和总线的
连接。
10、按照上面几节的描述步骤,完成所有输入和输出端
口和元件的连接,最后选择tools->Check Schematic,对设
计的原理图进行检查,修改错误,当没有错误后,将该原
理图保存。第7章 基于原理图的设计输入-创建模块符号 第7章 基于原理图的设计输入-创建模块符号 当设计完成后,下面创建该原理图的RTL符号描述。这
个RTL符号是该原理图的例化描述。当创建完RTL符号
后,就可以将该符号添加到顶层的原理图设计文件中。下
面给出创建模块符号的步骤:
1、在工程管理窗口(Source window),选择time_cnt.
sch文件;
2、在处理窗口(Process window),选择+ Design Utilties
并将其展开,下面工具将以分层列表的方式显示。
3、双击Create Schematic Symbol选项。
通过以上步骤,产生该模块的RTL符号描述。第7章 基于原理图的设计输入
-创建状态图模块 第7章 基于原理图的设计输入
-创建状态图模块 使用状态图编辑器(state diagram editor),可以通过状
态图编辑器建立有限自动状态机(FSM),该状态机中包
括状态,输入/输出和状态的迁移条件。状态图编辑器以
VHDL、Verilog和ABEL的形式输出设计文件。作为结果
的HDL代码被综合建立网表文件,同时创建RTL的符号描
述用于顶层原理图的调用。在该部分将一个尚未完成的状
态图设计完成。
如图7.9所示,使用前面的方法,通过状态图编辑器打
开statmach.dia文件。 第7章 基于原理图的设计输入
-创建状态图模块第7章 基于原理图的设计输入
-创建状态图模块 该文件中的圆圈代表不同的状态;黑色描述的表达式是
状态迁移的条件;输出表达式。这些表达式的书写有
的语法,最终以VHDL、Verilog和ABEL语言输出描述。第7章 基于原理图的设计输入-添加状态第7章 基于原理图的设计输入-添加状态 通过下面的步骤,将一个clear状态添加到状态机中:
1、在状态图编辑器的界面中,单击图标;
2、如图7.10所示,将光标移到图的左边,点击鼠标
将其放在给定的位置;
3、单击该图标,将状态名字改为clear,选择ok; 第7章 基于原理图的设计输入-添加状态第7章 基于原理图的设计输入-添加状态第7章 基于原理图的设计输入-添加迁移第7章 基于原理图的设计输入-添加迁移 状态迁移定义了状态机之间的状态变化。状态图中的状
态变化用箭头描述。该状态的迁移是无条件的,因此不需
要迁移的条件。通过下面的步骤,在clear和zero状态之间
添加迁移:
1、在状态图编辑器的界面中,单击图标;
2、单击clear状态图标,然后再单击zero状态图标。可以
看到在两个状态之间产生了由clear指向zero的箭头;
3、在状态图编辑器的界面中,单击图标,放弃继续添
加迁移;第7章 基于原理图的设计输入-添加迁移第7章 基于原理图的设计输入-添加迁移第7章 基于原理图的设计输入-添加行为第7章 基于原理图的设计输入-添加行为 状态行为描述的是在该状态下的输出的情况,通过下面
的步骤将在clear状态中,驱动RST的输出为‘1’:
1、双击clear状态,弹出图7.12的状态对话框。在输出的
对话框中输入rst=’1’的条件,当然也可以通过output
Wizard生成。第7章 基于原理图的设计输入-添加行为第7章 基于原理图的设计输入-添加行为 2、如果通过output Wizard的工具,在Logic
Wizard中输入下面的值dout=rst,constant =’1’。第7章 基于原理图的设计输入
-添加复位条件第7章 基于原理图的设计输入
-添加复位条件 使用状态复位的特征,为状态机指定复位条件。状态
机初始化这个特定的状态,并且当复位条件满足时,进
入到下一个给定的状态。当RST或者DCM的lock信号满
足条件时,状态机将进入到clear状态。下面的步骤将添
加rst信号到状态机中:
1、在状态图编辑器的界面中,单击图标;
2、在clear状态单击鼠标,然后移动到clear状态的圆
圈上,单击鼠标,如图7.13所示,这时产生一个状态复
位的信号指示箭头;第7章 基于原理图的设计输入
-添加复位条件第7章 基于原理图的设计输入
-添加复位条件第7章 基于原理图的设计输入
-添加复位条件第7章 基于原理图的设计输入
-添加复位条件 3、此时有一个提示出现,“should this reset be
asynchronous(yes) or synchronous(no)?”,回答”yes”;
通过上面的步骤,完成了复位条件的添加。第7章 基于原理图的设计输入
-设计输出和添加 第7章 基于原理图的设计输入
-设计输出和添加 当状态图全部完成后,剩下的就是输出HDL语言描述的
文件。下面给出产生HDL输出文件的步骤:
1、选择Options>Configuration。在Language Section中选
择VHDL语言。
2、在Language Vendor Section选择Xilinx XST,点击OK
按纽。
3、在工具条中选择Generate HDL图标。然后在Resoult
窗口中显示编译的状态,单击ok按纽。
4、浏览器自动打开,显示产生的VHDL代码。查看代
码然后关闭该窗口。第7章 基于原理图的设计输入
-设计输出和添加第7章 基于原理图的设计输入
-设计输出和添加 5、关闭状态图编辑工具。
6、在ISE主界面中,添加设计文件,打开statmach.v
文件。
7、在Source标签下,选择statmach.v文件。
8、在处理标签下,单击+ Design Utilities选项。双击
Create Schematic Symbol图标,产生该设计的RTL符号,
该符号在最后将由顶层文件调用。第7章 基于原理图的设计输入
-设计完成第7章 基于原理图的设计输入
-设计完成 在该设计中,还设计到DCM1模块的建立,ROM模块
的建立,Debounce模块的建立,这些模块的建立过程和
前面是一样的,在此就不进行详细的说明了。这些模块
建立完成后,必须通过Create Schematic Symbol工具生成
RTL的符号,这样才能完成顶层原理图的设计。
顶层模块的生成过程和前面原理图的建立过程是一样
的,只要遵循前面的步骤即可。习习题
1、说明基于原理图的设计输入方法。
2、举例说明状态图的设计方法。
3、建立一个基于原理图的设计工程。