Max+plus Ⅱ系统应用入门,仿真顶层电路

今天学习了Max+plus Ⅱ系统的基本使用,仿真顶层电路,这里还是写一个教程,供大家学习,也供自己熟悉。

一、设计输入

打开Max+plus Ⅱ系统后,按屏幕上方的按钮,或者选择菜单“File”-->“NEW…”,出现如图1-1所示的对话框,在框中选中“Text Editor file”

将下面粉色部分的程序代码复制到文本输入框内

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY PC IS

PORT(

         LOAD,LDPC,CLR: IN STD_LOGIC;

         D: IN STD_LOGIC_VECTOR(7 DOWNTO 0);

         O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

         );

END PC;                                                  

ARCHITECTURE A OF PC IS

SIGNAL QOUT: STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

        PROCESS(LDPC,CLR,LOAD)

        BEGIN

             IF(CLR='0') THEN

                QOUT<="00000000";

             ELSIF(LDPC'EVENT AND LDPC='1') THEN

                IF(LOAD='0') THEN

                    QOUT<=D;      --BUS->PC

                ELSE

                    QOUT<=QOUT+1; --PC+1

                END IF;

             END IF;

        END PROCESS;

        O<=QOUT;

END A;

输入完毕后,选择菜单“File-->Save”,点击选中保存的路径。输入正确的文件名称pc.vhd,并把Automatic Extension修改为vhd

注意一定要双击选中,且路径不带有中文,文件后缀名正确,不然编译的时候会报错。

选择菜单“File”-->“Create Default Symbol”,弹出编译窗口,点击start,如果是0errors,则继续。

接下来创建源程序ls273.vhd,步骤与创建pc.vhd的步骤一致,可以参考上面的步骤,程序代码为下面的粉色部分,要注意的是,文件名要修改正确,路径与pc.vhd保持一致。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LS273 IS

PORT(

        D: IN STD_LOGIC_VECTOR(7 DOWNTO 0);

        CLK: IN STD_LOGIC;

        O: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

        );

END LS273;

ARCHITECTURE A OF LS273 IS

BEGIN

        PROCESS(CLK)

        BEGIN

             IF(CLK'EVENT AND CLK='1') THEN

                  O<=D;

             END IF;

         END PROCESS;

END A;

接下来创建源程序rom.vhd,步骤与创建pc.vhd的步骤一致,可以参考上面的步骤,程序代码为下面的粉色部分,要注意的是,文件名要修改正确,路径与pc.vhd保持一致。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ROM IS

PORT(

        DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

        ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

        CS:IN STD_LOGIC

);

END ROM;

ARCHITECTURE A OF ROM IS

BEGIN

        DOUT<="10000000" WHEN ADDR="00000000" AND CS='0' ELSE

              "10010001" WHEN ADDR="00000001" AND CS='0' ELSE

              "00000001" WHEN ADDR="00000010" AND CS='0' ELSE

              "10010010" WHEN ADDR="00000011" AND CS='0' ELSE

              "00000000" WHEN ADDR="00000100" AND CS='0' ELSE

              "10100001" WHEN ADDR="00000101" AND CS='0' ELSE

              "10110000" WHEN ADDR="00000110" AND CS='0' ELSE

              "00001101" WHEN ADDR="00000111" AND CS='0' ELSE

              "11000110" WHEN ADDR="00001000" AND CS='0' ELSE

              "11010001" WHEN ADDR="00001001" AND CS='0' ELSE

              "11010001" WHEN ADDR="00001010" AND CS='0' ELSE

              "11100000" WHEN ADDR="00001011" AND CS='0' ELSE

              "00000101" WHEN ADDR="00001100" AND CS='0' ELSE

              "11111000" WHEN ADDR="00001101" AND CS='0' ELSE

              "11100000" WHEN ADDR="00001110" AND CS='0' ELSE

              "00001101" WHEN ADDR="00001111" AND CS='0' ELSE

              "00000000";

END A;

上面三个源程序文件创建完后,我们创建图形设计文件。

选择菜单“File”-->“New”,在如图1-1所示的对话框中选择“Graphic Editor File”

双击空白处,弹出“Enter Symbol”对话框,双击Symbol Files的原件添加进去(三个:PC、LS237、ROM)

继续双击空白处,将Symbol Libraries修改到f:\计组\maxplus2\max2lib\prim,即你的prim目录,目录跟我不一样的按自己的来。

在Symbol Files下划找到input,双击添加

在Symbol Files下划找到output,双击添加

点击input元件,CTRL+c复制,CTRL+v粘贴,一共需要5个input元件,1个output元件。(PS:下面的图我不小心多复制了一个output,如果你也不小心的话,CTRL+z撤销就好了)

放好输入/输出元件符号,再将鼠标箭头移到符号的输入/输出引脚上,鼠标箭头形状会变成“+”字形,然后可以按着鼠标左键并拖动鼠标,绘出一条线。

相信聪明的你一下子就学会操作了~接下来只要根据下面的图进行连线就好了

注意:线的粗细一定与图一致,若线画错可以点击线,线变红后点击delete删除

接下来设置输入/输出引脚名,双击PIN_NAME,修改为对应的原件名。

各个输入/输出引脚名与下图保持一致。

最后选择“File”-->“Save”菜单,将此顶层原理图文件取名为top.gdf,Automatic Extension修改为.gdf

二、编译处理

在编译top.gdf之前,需要设置此文件为顶层文件,或称工程文件(项目文件):Project。选择菜单“File”-->“Project”-->“Set Project to Crurrent File”,当前的工程即被设为top。

然后选择用于编程的目标芯片。选择菜单“Assign”-->“Device

在对话框中的“Device Family”下拉栏中选择ACEX1K,然后在“Devices”列表框中选择芯片型号“EP1K30TC144-1”

单击工具栏中的编译器快捷按钮,(选择MAX+plus Ⅱ-->Compiler选项,即可打开编译器窗口)对顶层文件进行编译,也是弹出后点击start

编译成功后,不要关掉编译窗口,我们来确定引脚。选择菜单“Assign”-->“Pin/Location/Chip…”

在弹出的窗口中,可以点击Search按钮,在弹出的窗口中Node Name输入项的右边有一个List,点击后出现顶层文件包含的所有输入输出引脚名,我们点击选中CLK

将Pin填入128,点击Add。

当你看到白色框框出现刚刚你输入的元件与引脚,则设置成功。

接下来的如法炮制,将下面的表的各个引脚一一添加

引脚名

芯片引脚号

引脚名

芯片引脚号

引脚名

芯片引脚号

CLK

126

INDATA3

12

OUTDATA2

32

CLR

138

INDATA4

13

OUTDATA3

33

CS

20

INDATA5

17

OUTDATA4

36

LOAD

21

INDATA6

18

OUTDATA5

37

INDATA0

8

INDATA7

19

OUTDATA6

38

INDATA1

9

OUTDATA0

30

OUTDATA7

39

INDATA2

10

OUTDATA1

31

全部添加完毕后,点击ok

全部设定完毕后,下面开始编译。选择“MAX+plusII”-->“Compiler”菜单,start进行编译,不要关闭编译窗口,在编译器窗口上方的“Interfaces”-->“VHDL Netlist Reader Settings”,在弹出的窗口中选“VHDL’93”

三、仿真波形

选择菜单“File”-->“New”,在出现的“New”对话框中选择“Waveform Editor file”,确定后出现下面图片。

选择菜单“Node”-->“Enter Nodes from SNF…”,出现如图所示的选择信号节点对话框,点击List,左边列表框选中LOAD[I],然后点击“=>”按钮,添加到右边的框框

接下来将左边列表框中的节点CS[I]、CLR[I]、CLK[I]、INDATA[7..0](I)、OUTDATA[7..0](O)、|pc:2|O(B)和|ls273:1|O(B)也分别选中到右边的列表框

添加完毕ok后,出现下面一致的东西

点击“File”-->“End Time”,将时间设置为5us,方便全局查看。

接下来设置各个节点的信号。

首先设置LOAD信号,用鼠标点LOAD信号的Value区域,可以将LOAD选中,这时LOAD的波形区域全部变成黑色。按集成环境窗左边上的置“1”按钮,LOAD的值将被置为“1”;

LOAD的value设置为了1,如图

然后设置CS信号,用鼠标点CS信号的Value区域,可以将CS选中,这时CS的波形区域全部变成黑色。按集成环境窗左边上的清“0”按钮,CS的值将被清为“0”;

再设置CLR信号,采用与设置LOAD信号相同的方法将CLR的值置为“1”,然后用鼠标左键点击CLR的0~100ns区域,按住鼠标往后挪到200ns区域全部变成黑色。按集成环境窗左边上的清“0”按钮,CLR在0~200ns区域的值将被清为“0”。

接着再设置CLK时钟信号,用鼠标点CLK信号的Value区域,可以将CLK选中,这时CLK的波形区域全部变成黑色。按集成环境窗左边的时钟按钮,对话框默认值0。

最后设置INDATA[7..0]信号,用鼠标点INDATA[7..0]信号的Value区域,可以将INDATA[7..0]选中,这时INDATA[7..0]的波形区域全部变成黑色。按集成环境窗左边的总线数据设置按钮,弹出对话框,默认值0就可以。

全部设置完如下图。

接下去是运行仿真器(Simulator)。点击工具栏上的波形仿真快捷按钮,出现保存提醒,将文件命名top.scf,保存在统一路径。

点击start进行时序仿真

时序仿真波形结果如图所示

双击pc:2IO,出现对话框,把名字修改为PC,如果你的value值不是16进制,可以点击HEX修改进制。

将ls273:1|O修改为AR,全部修改完毕后,我们的仿真波形到这里全部完成。

到这里的完美收官了

结束,完结撒花~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值