引言
近几年通过EDA(电子设计自动化)涉及方法和工具的逐步应用,大大缩短了电子电路的设计时间。目前EDA软件种类繁多但都价格昂贵,大大影响了EDA的普及和应用,因此开发开放源码的EDA工具有重要意义。
1.
基于Scilab的数字电路设计工具
Scilab是法国INRIA(国家信息与自动控制研究所)开发的开发源码科学计算软件[1]。Scilab和MATLAB比较接近,它主要侧重于控制系统计算机辅助设计,语句格式也和 MATLAB 类似。Scicos是Scilab 内置的图形化仿真工具包,类似于MATLAB中的Simulink。选择Scilab,主要是考虑到以下几点。首先,Scicos中建模和仿真的交互式环境完全是可视化和图形化的,用户只需将表示一定的运算函数的模块用连线连接起来,而无须了解模块内部的实现机制,就可以方便地实现一个控制系统; 其次,Scilab/ Scicos是自由软件,源代码开放,在开发和使用过程中有利于解决自主知识产权问题,也有利于软件的成长和完善。我们希望最终达到的目的是:用户在Scilab / Scicos环境下对电子电路进行高级描述,并可对自己的设计方案进行系统仿真和修正,然后通过编译生成基于VHDL的RTL级结构模型。该模型可通过各种商业化的IC-CAD接口,最终产生对应于所描述系统的硬件平台。通过使用这样的开发工具,用户在设计集成电路系统时,即使不了解硬件电路的内部细节,甚至不了解VHDL语言,也可以根据自己的需要进行电子电路的设计[2]。基于Scilab/SCICOS我们实现了数字电路的设计工具EDA Model Builder,使用其设计数字电路的流程如下图:
1.1基于Scilab的数字电路设计工具体系结构
Scilab/Scicos没有硬件仿真能力,通过添加模块库和COFS to VHDL编译器我们实现了数字电路模型的建模、仿真直至VHDL代码生成。其总体结构见下图:
图2 总体结构图
1.2 几个关键问题的讨论
1.2.1建立EDA基础模块库和虚拟仪器库
Scilab提供了多种机制[7]来实现Scicos仿真元件的添加。
Scilab/Scicos的可自定义模块类别分三种:超级模块(Super models )、自定义模块(Self-construction)、Scilab/scicos编写的模块(Scicos models),在本系统的硬件模块库和虚拟仪器库的开发采用C++ 开发的自定义模块。
Scilab/Scicos的模块包含两部分,为了进行硬件仿真和代码编译,我们将其扩展为三个部分,每个模块包括三个函数,分别如图所示:
图4 扩展模块结构图
分别是界面函数(Interface function)、功能函数(Computing function)和VHDL模板函数(VHDL Template)。
设计规则
位宽设计原则:在设计中,必须根据具体情况规定输入和输出数据口的位宽,即源端口与目标端口的数据位宽。一旦确定了输入端的数据位宽,convert就会通过各中间模块把数据位宽从源端口向目标端口传递。
频率设计规则:(1).单时钟设计规则:在Scicos设计转换成硬件描述语言的系统过程中,EDA Model Builder将使用同步设计规则,即在设计系统中的所有EDA Model Builder时序模块,如Delay模块,都以单一时钟的上升沿同步工作,这个时钟频率即为整个系统的采样频率。对于有些同步时序的模块,其时钟引脚不会直接显示在Scicos设计图上,但当convert将设计系统转化为VHDL文件时,才自动地把时序模块的时钟引脚都连在一起,并与系统的单一时钟相接。(2).如果某一模块具有来自多个模块的不同频率的时钟驱动,则此模块(目标模块)将在Scilab 仿真文件中采用其中最高频率的时钟.
取名规则:EDA Model Builder模块的命名必须遵循VHDL的命名规则。
EDA基础模块库为Scilab/Scicos提供了硬件建模元件,在硬件模块库中我们添加了如下模块:门级模块组、算术模块组、基础模块组、总线模块组、时序模块组。虚拟仪器库在Scicos硬件仿真时提供电路信号的发生和检测,在虚拟仪器库中我们添加了示波器模块组、信号发生器模块组、计数器模块组。
1.2.2 COFS to VHDL 门级代码编译器的开发
COFS to VHDL 门级代码编译器模块是整个软件的核心,它把Scilab/scicos的仿真模块编译为门级的VHDL代码。编译器的任务是从COFS文件里取得仿真模块的结构和参数,转换为门级的VHDL代码。编译处理的步骤如下:(a)读取cosf文件;(b)数据位宽传递;(c)模块数目识别;(d)模块连接定位;(e)模型端口定义;(f)模型文件映射;(g)VHDL代码全局优化。 整个编译过程遵守以下事项:(a)每个模型的时钟设计在转换为VHDL时采用时钟的上升沿;(b)多时钟模型时,采用最高的频率;(c)每个模块都有各自的VHDL代码模板和仿真行为描述;(d)门级可综合代码的实现采用模型中门级VHDL代码模板完成;(e)转换后整合各个模块的代码,生成一个标准的VHDL代码[8]。
软件的工作流程如图:
图5 代码编译流程
采用在VHDL设计的元件调用的方法,可以不用安装另外一个库。转换后,在当前设定的目录下,转换为VHDL所有的文件。Convert对于每一个EDA Model Builder的HDL子系统模块产生一个单独的VHDL文件,这些文件都有独立的实体和结构体。EDA Model Builder产生的VHDL文件中的实体名位置具有全局性,所有的子系统名必须是唯一的。
COFS to VHDL 门级代码编译器采用Windows 平台 使用Visual C++ 6.0实现。
2. 测试实例
2.1实例:IIR滤波器
IIR数字滤波器是指输入输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。下面是在EDA Model Builder上实现IIR数字滤波器的方法。
2.2测试环境和结果
我们采用EDA Model Builder实现了IIR滤波器的设计:随机序列产生的信号经过乘法器、延时、增益,累加器,最后输出随机序列,仿真结果在虚拟示波器显示出来。其SCICOS模型如图6 ,见好模型后对其进行了仿真测试,图7和图8 分别是对原始的随机序列信号和原始信号加噪声干扰后的经IIR滤波结果。图9为COFS to VHDL编译器操作界面。
图6 随机序列信号IIR滤波器模型图(EDA Model Builder运行时截图)
图7 原始的随机序列信号
图8原始信号加噪声干扰后的经IIR滤波结果
图9 COFS to VHDL编译器操作界面
IIR滤波器转换生成的VHDL代码片断如下:
Library IEEE; --调用IEEE标准库
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
entity IIR2 is --实体端口信号定义
port (
nxuin1:in std_logic;
nxuout1:out std_logic;
reset : in std_logic;
clk : in std_logic
);
end IIR2;
architecture a of IIR2 is
Component GAINBLK_f_1
port (
nxuin1 : in std_logic;
nxuout1 : out std_logic
);
end Component;
对于EDA Model Builder生成的IIR滤波器VHDL代码,我们采用了第三方EDA工具综合结果 Synplify Pro 7.1对其进行验证、综合。仿真和综合结果表明该IIR滤波器的设计是正确的,可以达到设计目标。由于其EDA基础模块库的行为级描述和VHDL\GATE描述是单独的,有利于建立精确的系统级数学模型和生成可综合VHDL代码。
3. 结论
本文介绍了一种基于Scilab的数字电路设计工具的设计与实现方法,目前EDA技术应用广泛,但是开放源码的EDA工具却很少,因此开发开放源码的硬件设计工具是很有意义的。该软件作为OPEN SOURCE,以期为中国的集成电路产业发展做出贡献。
本文作者创新点在于提出和实现了一种基于Scilab/Scicos的HDL建模和仿真工具,其原形系统曾在第四届SCILAB Contest获得三等奖(http://lis.buaa.edu.cn/scilab05/prize.htm)。
参考文献
[1] http://www-rocq.inria.fr/scilab
[2] 方钰,黄建文. Scilab/Scicos/在硬件软件联合设计中的应用[J]计算机工程 , 2002, (06) .
[3] 石晓郁,. 片上系统设计中的事务级建模方法. 微计算机信息 , 2006, (05)
[4] 王红,邢建辉,杨士元,. SOC测试访问机制[J]微计算机信息 , 2006, (02) .
[5] 王国章,刘战,须自明,于宗光,. 一种新的硬件设计方法—结构化ASIC技术[J]微计算机信息 , 2006, (02) .
[6] 冯江,王晓燕,谢旭红,卢宏,. IC设计中的VHDL语言应用研究[J]微计算机信息 , 2006, (02) .
[7] 胡包钢、赵星、康孟珍等 科学计算自由软件Scilab教程 165-203 清华大学出版社 2003.1
[8] SjoholmS,LindhL.用VHDL设计电子线路[M].边计年,薛宏熙译.北京:清华大学出版社,2000.
作者简介:张冬 (1981-) 宁夏大学物理电气信息学院2005 级电路与系统硕士研究生,主要研究方向:智能仪器 ;何建国 (1960-) 宁夏大学物理电气信息学院教授 硕士生导师,主要研究方向:食品机械 ;汪西原(1964-) 宁夏大学物理电气信息学院副教授 硕士生导师,主要研究方向:数字信号处理 ; 康 彩 (1983-) 宁夏大学物理电气信息学院2002级电子专业本科生,主要研究方向:智能仪器。
Biography:
ZHANG Dong (1981- ) Master of Circuit and System, School of Physics and Electrical Information, Ningxia University; Research areas: Intelligent Instrument; Prepared degree: Master; Email: zd4004@163.com & grid@nxu.edu.cn
HE Jianguo (1960- ) Professor, Master Student Supervisor, School of Physics and Electrical Information, Ningxia University; Research areas: Food Machine Design;
WANG Xiyuan (196- ) Associate Professor, Master Student Supervisor, School of Physics and Electrical Information, Ningxia University; Research areas: DSP;
KANG Cai (1983- ) Bachelor of Electrical Information Engineering, School of Physics and Electrical Information, Ningxia University; Research areas: Intelligent Instrument; Email: kcgrid2004@163.com
(750021宁夏大学物理电气信息学院 ,宁夏,银川)张冬 何建国 汪西原 康彩
(School of Physics & Electrical Information, Ningxia University, Ningxia, 750021, R.P. China)ZHANG Dong , HE Jianguo , WANG Xiyuan, KANG Cai