Max+plusⅡ的使用.docx
- 文档编号:5495499
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:18
- 大小:499.97KB
Max+plusⅡ的使用.docx
《Max+plusⅡ的使用.docx》由会员分享,可在线阅读,更多相关《Max+plusⅡ的使用.docx(18页珍藏版)》请在冰点文库上搜索。
Max+plusⅡ的使用
MAX+plusⅡ使用简介
下面通过一个实例(exampl1)的设计过程,介绍MAX+plusⅡ的使用。
exampl1采用层次设计方法,exampl1电路由一个3位二进制计数器counter和一个3位2选1多路选择器mux2构成;而计数器又是由三个触发器tff1组成的,tff1是带异步清零、具有时钟使能的T触发器。
在本设计中,mux2用VHDL文本方式描述;tff1、counter和exampl1分别用底层电路图、上层电路图和顶层电路图描述。
通过这个设计介绍以下几项内容:
●建立子目录和设计项目
●绘制电路图
●书写VHDL文件
●绘制高层电路图
●编译和适配设计
●建立电路输入信号的波形
●仿真
●定时分析
1.建立子目录和设计项目
首先,在Windows窗口,用资源管理器为你的设计项目建立一个子目录,例如,d:
\max2work\exampl,你的设计项目的所有文件将都保存在该目录下。
其次,为你的设计项目tff1命名,具体的做法是:
启动MAX+plus,打开MAX+plusⅡManagerr(程序管理器)窗口,点击File(文件)→Project(设计项目)→Name(名字)。
在ProjectName对话框中键入设计项目名:
tff1(带异步清零、具有时钟使能的T触发器)。
MAX+plusⅡManager窗口的标题条变成MAX+plusⅡ-d:
\max2work\exampl\tff1。
2.建立tff1电路图文件
首先,建立tff1的电路图文件。
在MAX+plusⅡManager窗口,点击MAX+plusⅡ菜单→GraphicEditor(图形编辑器),打开GraphicEditor窗口。
点击File→SaveAs(另存为),在FileName对话框中键入电路图的名字(它应与设计项目的名字相同):
tff1(后缀自动为.gdf)。
点击OK按钮,保存tff1.gdf文件。
然后,绘制tff1电路图(图1)。
在GraphicEditor窗口绘制电路图的步骤如下。
⑴加入电路符号
①加入电路的输入和输出符号
将鼠标置于GraphicEditor窗口,并点击鼠标右键弹出快捷菜单,然后选EnterSymbol(加入符号)来打开EnterSymbol菜单,在SymbolLibraries(符号库)中用鼠标左键双击prim来选择Primitives(图元)库。
库内的电路元件清单将显示在SymbolFiles(符号文件)框中。
利用滚动条找到input(输入)图元,并选中它。
之后,点击OK钮,input符号就出现在GraphicEditor窗口。
在已输入的input符号上单击鼠标左键,则选中该图元(input符号变成红色),压下鼠标左键同时拖拽鼠标,可移动input符号到你希望放置的地方。
注意:
用同样的方法可选中和移动电路图上的任何符号和连线。
在图1tff1电路图中有三个输入,需要输入三个图元。
为此,在已输入的input符号上单击鼠标左键,选中该图元(input符号变成红色)。
同时按下Ctrl键和鼠标左键,并拖拽鼠标来复制一个input符号。
用同样的方法再复制一个input符号。
三个input符号建立后,分别选中它们并点击鼠标右键→EditPinName(编辑引脚名),将它们分别命名为CP、Clr和EI。
图1tff1电路图
点击鼠标右键弹出快捷菜单,然后选中并打开EnterSymbol菜单,在SymbolLibraries中用鼠标左键双击prim来选择Primitives库。
库内的电路元件清单将显示在SymbolFiles框中。
利用滚动条找到output(输出)图元,并选中它。
之后,点击OK钮,output符号就出现在GraphicEditor窗口,将其放到合适的位置并命名为Q。
然后,再复制一个output符号,并命名为EO。
②加入逻辑符号
点击鼠标右键弹出快捷菜单,然后选中并打开EnterSymbol菜单,在SymbolLibraries中用鼠标左键双击prim来选择Primitives库。
库内的电路元件清单将显示在SymbolFiles框中。
利用滚动条找到not(非门)图元,并选中它。
之后,点击OK钮,not符号就出现在GraphicEditor窗口,再将其放到合适的位置。
用同样的办法建立一个dffe(带异步清零、具有时钟使能的D触发器)符号和一个and2(2输入与门)符号。
③画和删除连线
如果把鼠标放在符号引脚的端点上,则鼠标的指针将由箭头变成十字线。
在符号引脚的端点上压下鼠标左键并拖拽鼠标,则可建立一条连线。
按图1画出所有的连线。
若需要删除一条连线,则先用鼠标左键选中它,再按Delete键来删除该线段。
注意:
按此方法也可以选中和删除任何多余的符号。
⑵保存和检查电路图
利用File→Project→Save&Check(保存并检查)来保存和检查电路图。
如果有错误,则在Message窗口出现错误的通知。
点击Message钮可看到所有的错误信息;点击Locate(定位)以便找到错误的地方;或者点击HelponMessage(信息帮助)来得到有关的解释。
⑶建立用户定义的符号
利用File→CreateDefaultSymbol(建立默认符号)来建立一个代表现行文件的符号(见图2),并用File→SaveAs保存该符号为tff1.sym,以便下面以它为模块构造较复杂的上层电路。
图2tff1电路图的符号
3.建立上层的counter电路图文件
下面利用三个tff1模块构造一个3位二进制计数器——counter(见图3)。
图3counter电路图
首先,为你的设计项目counter命名,具体的做法是:
在MAX+plusⅡManager窗口,点击File→Project→Name。
在ProjectName对话框中键入设计项目名:
counter。
MAX+plusⅡManager窗口的标题条变成MAX+plusⅡ-d:
\max2work\exampl\counter。
然后,建立counter电路图文件。
在MAX+plusⅡManager窗口,点击MAX+plusⅡ菜单→GraphicEditor,打开GraphicEditor窗口。
点击File→SaveAs,在FileName对话框中键入电路图的名字(它应与设计项目的名字相同):
counter(后缀自动为.gdf)。
点击OK按钮,保存counter.gdf文件。
此后,开始画counter的电路图。
将鼠标位于GraphicEditor窗口,并点击鼠标右键弹出快捷菜单,然后选EnterSymbol来建立输入、输出符号;在EnterSymbol窗口的SymbolFiles框中选tff1符号并做两个拷贝。
再加入连线构成图3所示的电路图。
利用File→Project→Save&Check来保存和检查电路图。
利用File→CreateDefaultSymbol建立一个代表counter.gdf的符号(见图4),并用File→SaveAs保存该符号为counter.sym,以便下面以它为模块构造更复杂的顶层电路。
图4counter电路图的符号
4.编译counter电路图
上层的counter电路图绘制完成后,可对它进行编译和仿真,以检验其正确性。
利用MAX+plusⅡ→Compiler(编译器)进入Compiler窗口(图5),点击Start(启动)钮来编译电路。
如果编译成功,则出现图6所示的结果。
点击“确认”钮,回到原来的窗口。
图5Compiler窗口
图6编译成功
5.仿真counter电路
一旦编译成功,可利用仿真来观察counter电路的行为。
⑴建立输入波形
在仿真之前需规定counter电路的输入波形。
利用MAX+plusⅡ→WaveformEditor(波形编辑器)进行输入波形的编辑。
在编译电路时,已建立了所有可以得到的探测点的清单,并存为SimulatorNetlistFile(SNF)仿真网表文件。
在WaveformEditor窗口,点击鼠标右键弹出菜单,从中选择EnterNodesfromSNF(从SNF中记入节点)。
在EnterNodesfromSNF窗口中,点击List(清单)钮。
点击“=>”钮来选择你希望用作输入或输出的探测点。
点击OK钮,回到WaveformEditor窗口(见图7)。
图7WaveformEditor窗口
下面介绍如何绘制输入波形图(见图8)。
①利用Option(选项)→GridSize(网格尺寸)来选择波形的最小时间间隔;总的仿真时间可用File→EndTime(结束时间)来定义。
例如,设置GridSize为50ns,EndTime为10μs。
②在RESET行的Value处点击鼠标左键,则自Value之后的波形区变成黑色宽条。
点击左边的第5个图标(即写有1字的图标),使它变为恒1值。
在波形的50ns处压下鼠标左键并拖拽到350ns处,则从50ns~350ns的这段波形变为黑色宽条;再点击左边的第4个图标(即写有0字的图标),使该段波形变为0值(见图8)。
③仿照上面的方法,按图8所示的波形编辑EN输入信号的波形。
图8输入波形
④在CLK行的Value处点击鼠标左键,则自Value之后的波形区变成黑条宽条。
点击左边倒数的第4个图标(即画有红色钟表图案的图标),弹出OverwriteClock窗口,并按图9填写相关的值。
然后,点击OK钮。
⑤利用File→SaveAs保存名为counter.scf的输入波形图。
图9OverwriteClock窗口
2仿真
利用MAX+plusⅡ→Simulator(仿真器)启动仿真器。
在Simulator窗口,点击Start钮,执行仿真。
仿真完毕,点击OpenSCF(打开SCF文件)钮。
观察仿真结果(见图10),并得知前面的设计(即图1和图3)是正确的。
图10仿真结果
6.建立mux2的VHDL文件
下面用VHDL建立一个3位的2选1多路选择器mux2.vhd文件。
首先,为你的设计项目mux2命名,具体的做法是:
在MAX+plusⅡManager窗口,点击File→Project→Name。
在ProjectName对话框中键入设计项目名:
mux2。
MAX+plusⅡManager窗口的标题条变成MAX+plusⅡ-d:
\max2work\exampl\mux2。
然后,建立mux2的文本文件。
在MAX+plusⅡManager窗口,点击MAX+plusⅡ菜单→TextEditor(文本编辑器),打开TextEditor窗口。
点击File→SaveAs,在FileName对话框中键入文本文件的名字(它应与设计项目的名字相同):
mux2.vhd。
点击OK按钮,保存mux2.vhd文件。
此后,开始写mux.vhd文件。
在TextEditor窗口,利用templates(模板)→VHDLtemplate选择合适的模板。
之后,点击OK钮。
例如,选择FullDesign:
Tri-StateBuffer模板,出现图11所示的TextEditor窗口。
图11TextEditor窗口
将图11的内容改写为mux2.vhd文件(见图12)。
利用File→Project→Save&Check来保存和检查文件是否有错误。
利用File→CreateDefaultSymbol来建立一个代表mux2.vhd的符号(见图13),并用File→SaveAs保存该符号为mux2.sym,以便下面以它为模块构造较复杂的顶层电路。
图12mux2.vhd文件
图13mux2.sym符号
7.建立顶层的exampl1电路图文件
下面,利用mux2和counter两个模块构造顶层电路图exampl1.gdf(图14)。
首先,为你的设计项目Project起一个名字,具体的做法是:
在MAX+plusⅡManager窗口,点击File→Project→Name。
在ProjectName对话框中键入设计项目名:
exampl1。
MAX+plusⅡManager窗口的标题条变成MAX+plusⅡ-d:
\max2work\exampl\exampl1。
然后,建立exampl1的电路图文件。
在MAX+plusⅡManager窗口,点击MAX+plusⅡ菜单→GraphicEditor,打开GraphicEditor窗口。
点击File→SaveAs,在FileName对话框中键入电路图的名字(它应与设计项目的名字相同):
exampl1(后缀自动为.gdf)。
点击OK按钮,保存exampl1.gdf文件。
此后,开始画exampl1电路图。
将鼠标位于GraphicEditor窗口,并点击鼠标右键弹出快捷菜单,然后选EnterSymbol来建立输入、输出符号;在EnterSymbol窗口的SymbolFiles框中选mux2符号和counter符号。
再加入连线和总线,并给输入、输出、连线和总线命名,最终构成图14所示的电路图。
为了给连线(或总线)命名,先在该连线(或总线)上点击鼠标左键,以选中该连线(或总线);然后,再点击鼠标右键弹出一菜单并选择EditNode/BusName(编辑节点或总线的名字)项;之后,键入该连线(或总线)的名字。
此外,在图14中采用了逻辑连线办法,即名字相同的连线(或总线)在电路上是相连的(而不必一定要画出连接线)。
这种方法可使电路图简练。
利用File→Project→Save&Check来保存和检查电路图。
图14exampl1.gdf电路图
8.观察顶层电路图的层次结构
点击MAX+plusⅡ菜单→HierarchyDisplay(层次显示),打开HierarchyDisplay窗口,观察顶层电路图exampl1.gdf的层次结构(见图15)。
图15顶层电路图exampl1.gdf的层次结构
9.编译和适配exampl1电路
⑴ 由于MAX+plusⅡ软件对exampl1电路图的编译和器件适配工作是连续进行的,故在编译之前需要选择希望使用的可编程器件(也可让MAX+plusⅡ软件自行选择合适的器件)。
本例由软件自行选择器件。
若希望选择器件,则利用Assign(指定)→Device(器件),得到Device对话框来选择器件。
此外,在对VHDL文件编译前,需要选择VHDL的版本号。
为此,在Compiler窗口下,利用主菜单的Interfaces(接口)→VHDLNetlistReaderSettings…(读者设置VHDL网表)打开相应的窗口,并在VHDLVersion(版本)栏中选择VHDL1987或者VHDL1993版本。
⑵利用MAX+plusⅡ→Compiler(编译器)进入Compiler窗口(图16),点击Start钮来编译电路。
如果编译成功,则出现图17所示的结果。
点击“确定”钮,回到原来的窗口。
在图16的info(信息)行中示出:
软件自行选择了EPM7032LC44-6型器件,并且适配成功。
图16Compiler窗口
图17编译成功
10.建立exampl1顶层电路的输入波形
一旦编译成功,可利用仿真来观察eaxmpl1电路的行为。
为了在仿真后自动产生各输出信号,在仿真之前需规定exampl1电路的输入波形,利用MAX+plusⅡ→WaveformEditor进行输入波形的编辑。
在编译电路时,已建立了所有可以得到的探测点的清单,并存为SimulatorNetlistFile(SNF)仿真网表文件。
在WaveformEditor窗口,点击鼠标右键弹出菜单,从中选择EnterNodesfromSNF。
在EnterNodesfromSNF窗口中,点击List钮。
点击“=>”钮来选择你希望用作输入或输出的探测点。
点击OK钮,回到WaveformEditor窗口(见图18)。
在图18的Name列中,每一行信号名的左边有一个图标,在图标内写有空心的I字,则表示该信号为输入信号;O字的为输出信号;B字的为内部(隐埋)信号。
图18WaveformEditor窗口
编辑输入波形的具体步骤如下(见图19)。
⑴利用Option→GridSize来选择波形的最小时间间隔;总的仿真时间可用File→EndTime来定义。
例如,设置GridSize为50ns,EndTime为10μs。
图19输入信号波形
⑵在RESET行的Value处点击鼠标左键,则自Value之后的波形区变成黑条宽条。
点击左边的第5个图标(即写有1字的图标),使变为恒1值。
在波形的0ns处压下鼠标左键并拖拽到150ns处,则从0~150ns的这段波形变为黑色宽条;再点击左边的第4个图标(即写有0字的图标),使该段波形变为0值(见图19)。
⑶仿照上面的方法,按照图19所示的波形编辑EN和SEL输入信号的波形。
⑷在DATA0[2..0]行的Value处点击鼠标左键,则自Value之后的波形区变成黑条宽条。
点击左边倒数第2个图标(即写有G字的图标),弹出OverwriteGroupValue窗口,并按图20填写相关的值。
然后,点击OK钮,则DATA0[2..0]输入波形的值改为4,并且DATA0[0],DATA0[1]和DATA0[2]的值分别自动改为0,0和1。
图20OverwriteGroupValue窗口
⑸在CLK行的Value处点击鼠标左键,则自Value之后的波形区变成黑条宽条。
点击左边倒数第4个图标(即画有红色钟表图案的图标),弹出OverwriteClock窗口,并按图21填写相关的值。
然后,点击OK钮。
⑹利用File→SaveAs保存名为exampl1.scf的输入波形图。
图21OverwriteClock窗口
11.仿真exampl1电路
利用MAX+plusⅡ→Simulator来启动仿真器。
在Simulator窗口,点击Start钮,执行仿真。
仿真完毕,点击OpenSCF钮。
观察仿真结果(见图22),并得知前面的设计(即图12和图14)是正确的。
注:
点击图22左边的标有“+”或“–”号的图标,可以将波形放大或缩小;向右(或向左)拖动波形框下方的游标可观察整个时段的波形。
图22仿真结果
12.定时分析
利用定时分析,可以看到信号之间的延时关系。
单击MAX+plusⅡ菜单下的TimingAnalyzer(定时分析器),打开TimingAnalyzer窗口,再点击Start钮,得到图23的结果。
图23TimingAnalyzer窗口
由图23可知,用EPM7032LC44-6型可编程逻辑器件实现exampl1电路时,从器件的CLK输入引脚到DATAOUT1,DATAOUT2和EOUT输出引脚的传输延时均为7.6ns;从DATA00输入引脚到DATAOUT0输出引脚的延时、从输入引脚DATA01到DATAOUT1输出引脚的延时和从DATA02输入引脚到DATAOUT2输出引脚的延时均为6.0ns;从EIN输入引脚到EOUT输出引脚的延时也为6.0ns;从SEL输入引脚到DATAOUT0,DATAOUT1和DATAOUT2输出引脚的延时均为6.0ns。
13.观察器件内部适配和引脚分配的结果
单击MAX+plusⅡ菜单下的FloorplanEditor(芯片版面编辑器),打开FloorplanEditor窗口(图24),可看到exampl1电路在器件内部适配的情况和器件引脚分配的结果。
本例由软件自行选择器件并将exampl1电路适配到EPM7032LC44-6型器件,该器件内有两个逻辑阵列块(LAB),即图24中的A块和B块。
每个LAB类似一个GAL(包括16个宏单元),本例较简单,只用了两个LAB中的部分资源。
图24FloorplanEditor窗口
将鼠标指针放在图24中的某个端口的图标上,便可显示出该端口对应的器件引脚号。
例如,将鼠标指在EIN输入端口的图标上,则显示出“EIN@4(I/O)”字样,这表示输入端口位于器件的4号(输入/输出)引脚上。
此外,打开exampl1.rpt文件,也可看到整个器件的引脚分配和适配情况。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Max plus 使用