文中介绍了基于MAx+PLusⅡ软件为平台用硬件描述语言VHDL进行电子线路设计时易出现的问题、原因及其解决办法,并以实例作了较详细的说明。
面对现代电子技术的迅速发展,传统的电子设计技术将在很大程度上被EDA技术所取代。IEEE标准的硬件描述语言vHDL语言已成为EDA领域的首选硬件描述语言之一,但初学者在运用vHDL语言进行电子线路设计时容易出现很多问题。
笔者根据这几年的教学经验,对用VHDL语言基于MAx+PLuSⅡ为平台进行电子线路设计时易出现的问题、原因及其解决办法作如下介绍。
1.进行一项设计时忘记先建一文件夹而直接将设计文件存放在根目录上,调试程序出现Error:CAN’t open VHDL“w0RK”。这是由于EDA软件要求在进行一项设计时首先新建一文件夹存放设计文件,而此文件夹EDA软件默认为工作库(workLibrary),所以利用vHDL进行项目设计,不允许在根目录下进行。注意此文件夹名不能用中文或带空格。
2.文件存盘文件名取名任意,在编译时提示第一行有错误,检查程序却第一行并没有错误。这是由于在VHDL中,程序文本保存的文件名要求必须与程序的实体名相同,且其扩展名为.VHD。
3.若一个项目含有多个vHDL文件,在对各VHDL文件进行编译、下载测试前没有将当前文件设为顶层文件,这样下载测试的往往不是当前文件。所以在测试某设计文件前,首先要将其设计为工程(Project)即顶层文件。设计方法:单击菜单File→Project→Set Project to Current nle。
4.在下载测试前进行引脚锁定时,对于标准逻辑矢量数据类型sTD_LOGIC_vEcTOR进行引脚锁定,初学者往往出现各式各样的错误。进行引脚锁定时,引脚必须一个一个地确定。对于标准逻辑矢量数据类型sTD_LOGIC_VEcTOR要分别写出总线中的每个信号。
例7段数码显示译码器的设计程序(源程序见本刊网站WnArW.eleworld.com)
此程序中的输入端口A[3..0]、输出端口LED7s[6..0]均属于标准逻辑矢量数据类型sTD_LOGIc_VEcTOR。假若我们选择FLExl0K类型的“EPFl0K10Lc84_4”型号的芯片为下载目标器件,引脚锁定时,选择菜单“Assign”→“PIN/LOCation/Chip…"弹出一个对话框来设置引脚。在“Node name"右边的文本框中输入引脚名。对标准逻辑矢量数据类型的输入端口A[3..0]、输出端口LED7s[6..0],分别写出它们的每个信号,即A[3..0]写成A0、A1、A2、A3;LED7s[6…01]写成LED7S0、LED7s1…LED7s6,如附图所示。
5.在程序设计中初学者常常在信号与变量的使用上出现混乱。
在vHDL设计中,数据对象有三种:信号(signal)、变量(variabk)和常数(constant)。信号与变量相同点都具有能够接受赋值功能。不同点:信号的硬件特征更为明显,信号具有全局性特征,它可以用来进行进程之间的通信,信号定义位置在子程序、进程等外部;而变量只是一个局部量,它只能在进程语句、函数语句和过程语句中使用,它不能将信息带出对它做出定义的当前结构中,变量的定义位置在子程序、进程等内部。
此外使用中还要注意在进程中只能将信号列入敏感表中,而不能将变量列入敏感表。
6.基于MAx+PLusⅡ为平台进行电子线路设计时,因该软件的使用还受计算机系统时钟制约,如果计算机CMOS电量不足,或日期设置不对(即文件编辑保存时的时间比后来编译时计算机的系统时间超前,如文件编辑保存时计算机的时间为2005年4月而现在将此文件编译时计算机的系统时间却为2004年8月,则在编译时就会出错),在源程序编译过程中会出现Error:Time stampoffile’(文件名)’is greatex‘than the time stampof the culxent cNF[s]check operating system time错误信息提示,此时你需要检查计算机本身系统时钟设置,双击“任务栏”最右端的时钟,在弹出的“日期/时间属性”窗口修改好日期,重新编译程序,上述错误将不再出现。
结束语
在新世纪中EDA技术将为电子设计的工程技术人员提供强有力的工具,未来电子系统的设计将完全由EDA技术来承担。而硬件描述语言vHDL是EDA的重要组成部分,电子技术人员在使用vHDL语言的过程中,如能避免本文中所提及的错误,可少走弯路,对高质量、高效率地完成VHDL设计是十分有益的。