发 帖  
原厂入驻New
[经验]

基于MAX+plusⅡ开发平台的EDA设计方法

2008-6-16 08:47:47  3016
分享
0
<p><font color="#000000"><b> </b></font><font color="#000000">  MAX + plus Ⅱ是一种与结构无关的全集成化设计环境,使设计者能对altera 的各种CPLD 系列方便地进行设计输入、快速处理和器件编程。MAX+ plus Ⅱ开发系统具有强大的处理能力和高度的灵活性。其主要优点:与结构无关、多平台、丰富的设计库、开放的界面、全集成化、支持多种硬件描述语言( HDL) 等。</font></p>
<p><font color="#000000"><b>设计流程</b><b></b></font></p>
<p><font color="#000000">  数字系统的设计采用自顶向下、由粗到细,逐步分解的设计方法,最顶层电路是指系统的整体要求,最下层是具体的逻辑电路的实现。自顶向下的设计方法将一个复杂的系统逐渐分解成若干功能模块,从而进行设计描述,并且应用EDA 软件平台自动完成各功能模块的逻辑综合与优化,门级电路的布局,再下载到硬件中实现设计。利用MAX + plus II进行电路设计的一般流程如图1 所示。</font></p>
<p><font color="#000000"><img height="141" src="http://www.dzsc.com/data/uploadfile/20071114144119553.jpg" width="402" border="0"/></font></p>
<p><font color="#000000">具体设计过程如下。</font></p>
<p><font color="#000000">  1) 设计输入。 MAX + plus Ⅱ支持多种设计输入方式,如原理图输入、波形输入、文本输入和它们的混合输入。</font></p>
<p><font color="#000000">  2) 设计处理。 设计输入完后,用MAX + plus Ⅱ的编译器编译、查错、修改直到设计输入正确,同时将对输入文件进行逻辑简化、优化,最后生成一个编程文件。 这是设计的核心环节。</font></p>
<p><font color="#000000">  3) 设计检查。MAX + plus Ⅱ为设计者提供完善的检查方法设计仿真和定时分析。其目的是检验电路的逻辑功能是否正确,同时测试目标器件在最差情况下的时延。这一查错过程对于检验组合逻辑电路的竞争冒险和时序逻辑电路的时序、时延等至关重要。</font></p>
<p><font color="#000000">  4) 器件编程。 当电路设计、校验之后,MAX+plus Ⅱ的Programmer 将编译器所生成的编译文件下载到具体的CPLD 器件中,即实现目标器件的物理编程 。</font></p>
<p><font color="#000000"><b>文本输入方式和图形输入方式设计一个模60 </b><b>计数器</b></font></p>
<p><b><font color="#000000">系统分析</font></b></p>
<p><font color="#000000">  模60 计数器是可由一个10 进制计数器和一个异步清零6 进制计数器组成的。 本设计采用10 进制计数器74160 组件和6 进制计数器组成。 数字系统分块后,需要选择正确描述系统逻辑功能的方式。 对于所选用的CPLD ,需要用相应的设计开发软件。 如MAX + plus Ⅱ的设计描述方式有文本、波形、图形多种方式。 图形输入方式直观易懂。 当系统较大时,由于此方式连线多,使用十分不方便。 采用V HDL硬件描述语言的描述方式与结构无关,设计难度降低,软件修改方便而且大部分受控功能模块已经编译验证,系统设计时只要选择这些模块并按一定的逻辑功能组合即可 。</font></p>
<p><font color="#000000"><b>系统设计</b><b></b></font></p>
<p><font color="#000000">  本设计6 进制计数器采用文本输入方式设计,其代码如下:</font></p>
<p><font color="#000000">L IBRARY ieee ;</font></p>
<p><font color="#000000">USE ieee. std_logic_1164. all ;</font></p>
<p><font color="#000000">USE ieee. std_logic_unsigned. all ;</font></p>
<p><font color="#000000">ENtiTY counter6 IS &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%定义模块IS</font></p>
<p><a href="http://www.qooic.com/detail-PORT.html" target="_blank"><font color="#000000">PORT</font></a><font color="#000000"> (Load ,En Clrn , Clk : IN STD_LOGIC;</font></p>
<p><font color="#000000"> D : IN STD_LOGIC_VECTOR(2 downto 0) ;</font></p>
<p><font color="#000000">%定义输入端口</font></p>
<p><font color="#000000"> Q :OU T STD_LOGIC_VECTOR(2 downto 0) ;</font></p>
<p><font color="#000000">%定义输出端口</font></p>
<p><font color="#000000"> Co :OU T STD_LOGIC)</font></p>
<p><font color="#000000">END counter6 ;</font></p>
<p><font color="#000000">ARCHITECTURE a OF counter6 IS</font></p>
<p><font color="#000000">BEGIN &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%定义过程</font></p>
<p><font color="#000000">PROCESS(Clk)</font></p>
<p><font color="#000000"> variable tmp : std_logic_vector (2 downto 0) ;</font></p>
<p><font color="#000000">%定义一个矢量</font></p>
<p><font color="#000000">begin</font></p>
<p><font color="#000000"> IF Clrn =’0’THEN tmp : = "000" ;</font></p>
<p><font color="#000000">  else</font></p>
<p><font color="#000000"> IF( Clk’event AND Clk =’1’) THEN &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%过程声明</font></p>
<p><font color="#000000">  IF Load =’0’THEN tmp : = D ;</font></p>
<p><font color="#000000">  ELSIF En =’1’THEN</font></p>
<p><font color="#000000">    IF tmp = "101" THEN tmp : = "000" ;</font></p>
<p><font color="#000000">    ELSE tmp : = tmp + 1 ;</font></p>
<p><font color="#000000">  END IF ;</font></p>
<p><font color="#000000">  END IF ;</font></p>
<p><font color="#000000">  END IF ;</font></p>
<p><font color="#000000">  END IF ;</font></p>
<p><font color="#000000"> Q &lt; = tmp ; Co &lt; = (tmp (0) AND tmp (2) AND En) ;</font></p>
<p><font color="#000000"> END PROCESS ;</font></p>
<p><font color="#000000">END a ;</font></p>
<p><font color="#000000">  保存并编译设计代码, 然后创建电路符号counter6 ,接着用图形输入方式编辑模60 计数器,在编辑的过程当中可以引用6 进制电路符号counter6。 设计的系统电路如图2 所示。</font></p>
<p><font color="#000000"><img height="187" src="http://www.dzsc.com/data/uploadfile/20071114144119537.jpg" width="400" border="0"/></font></p>
<p><font color="#000000">  模60 计数器由十进制计数器74160 和以上设计的六进制计数器组成(见图3) ,当74160 计到9时,产生进位使6 进制电路能计数。</font></p>
<p><font color="#000000">&nbsp;<img height="177" src="http://www.dzsc.com/data/uploadfile/20071114144122939.jpg" width="400" border="0"/></font></p>
<p><b><font color="#000000">系统仿真</font></b></p>
<p><font color="#000000">  为了保证设计的正确性,系统设计之后还要进行仿真。本系统采用MAX7000S 系列CPLD 芯片,应用MAX+plus Ⅱ对各种文件从底层到顶层逐个编译,再进行逻辑仿真。其仿真波形如图4 所示。仿真之后通过MAX + plus Ⅱ的Programmer下载到可编程芯片上便完成设计。利用MAX + plusⅡ编译、查错生成一个能实现模60 的计数器, 从图4 可见初值为58 ,使能端EN 和清除控制端CL RN为高电平。 经过两个时钟周期上升沿Qa 从8 变到0 ,Qb 从5 变到0 ,再开始新一轮的计数。</font></p>
<p><font color="#000000"></font></p>
<p><br/></p>
fpt123456789 2012-11-27 23:26:49
看不懂,谢谢分享
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

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

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