1、2022-6-7共 107 页 1目录 一、集成电路设计的一般流程一、集成电路设计的一般流程 二、系统级建模工具二、系统级建模工具-Matlab 三、系统级建模工具三、系统级建模工具-Verilog-A 四、建模仿真实例四、建模仿真实例 一、集成电路设计的一般流程一、集成电路设计的一般流程2022-6-7共 107 页 2集成电路设计中不同的抽象级别:结构或系统级晶体管级(电路)器件物理级2022-6-7共 107 页 3VLSI数字集成电路设计模拟集成电路设计为什么需要系统级设计? 随着集成电路工艺和数字信号处理技术的不断发展, 1、电路的规模越来越大,系统构成越来越复杂。 2、晶体管级电路
2、仿真消耗很长时间,效率低下。 3、采用行为级描述电路将降低仿真时间。 行为级模型足以表述各个电路模块的功能,通过行为级仿真可以在功能上预先验证所设计的系统是否能够满足要求。2022-6-7共 107 页 4IC设计过程中系统工程师的地位 产品功能的定义和模块的划分 设计并验证系统的可行性 分配各个模块的性能指标 整个解决方案中芯片设计环节的组织者2022-6-7共 107 页 5系统工程师在系统工程师在IC设计中具有非常重要的地位,他们一般是工作经验丰富的设计中具有非常重要的地位,他们一般是工作经验丰富的IC设计工程师,他们能够根据自己的经验积累恰当的选择系统架构,恰当设计工程师,他们能够根据
3、自己的经验积累恰当的选择系统架构,恰当的选择建模原型及高阶非理想因素来获得最接近真实情况的指标定义。的选择建模原型及高阶非理想因素来获得最接近真实情况的指标定义。 二、系统级建模工具二、系统级建模工具-Matlab Matlab语言简介 Matlab基本知识 Matlab的编程 Matlab动态仿真工具Simulink2022-6-7共 107 页 62022-6-7共 107 页 7Matlab语言简介 MATLAB 的名称源自 Matrix Laboratory ,它是一种科学计算软件,专门以矩阵的形式处理数据。 其基本元素是无需定义维数的矩阵 包括Toolbox的各类应用问题的求解工具。
4、 MATLAB 被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作 Matlab最重要的特点是易于扩展,它允许用户自行建立完成指定功能的M文件,从而构成适合于其他领域的工具箱。2022-6-7共 107 页 82022-6-7共 107 页 9Matlab 基本知识2022-6-7共 107 页 101、命令窗口 在matlab 提示符“”下,键入matlab命令。例如输入一个3X3的矩阵: a=1,2,3;4,5,6;7,8,9 数据放在方括号内,行与行间分号间隔,数值间空格或逗号间隔。 Matlab语言是与大小写有关的语言,即变量A和a是两个完全不同的变量。 应该注意的
5、是:一般情况下,所有的函数名均由小写字母组成。2、图形窗口2022-6-7共 107 页 11当调用一个产生图形的函数时,Matlab会自动建立一个图形窗口。这个窗口可分裂成多个窗口,并可以在它们之间选择,这样在一个屏幕上可以显示多个图形。2022-6-7共 107 页 12Matlab的toolboxes 数值分析 数值和符号计算 工程与科学绘图 控制系统的设计与仿真 数字图像处理 数字信号处理 通讯系统设计与仿真 财务与金融工程 滤波器设计 Link For ModelSim2022-6-7共 107 页 13Matlab的编程 MATLAB Compiler 是能够将M 语言编译生成为函
6、数库、可执行文件 COM 组件等等。 通过M文件可以扩展 MATLAB 功能,使 MATLAB 能够同其他高级编程语言例如 C/C+ 语言进行混合应用。 利用 M 语言还开发了相应的 MATLAB 专业工具箱函数供用户直接使用。 More resource: http:/ 107 页 14M文件语法简介 Matlab提供近20类基本命令函数 包括:通用函数、基本数学函数、矩阵操作函数,绘图函数等等 充分使用help2022-6-7共 107 页 152022-6-7共 107 页 16一个简单的例子2022-6-7共 107 页 17Simulink仿真基础 工程中的控制系统需要专用的系统建模
7、软件,准确地建模,对其进行进一步的分析与仿真。 1990年,Matlab加入新的控制系统模型图输入与仿真工具 ,1992年正式将该软件更Simulink。 Simulink的两个含义:Simu(仿真)和Link(连接),可以在模型窗口上绘制出所需要的控制系统模型,然后利用SIMULINK提供的功能来对系统进行仿真和分析。 2022-6-7共 107 页 182022-6-7共 107 页 19Simulink的公共模块库 信源模块(信源模块(Source) 信宿模块(信宿模块(Sinks) 连续模块库(连续模块库(Continuous) 信号路由(信号路由(Signal Routing) 离散
8、模块库(离散模块库(Discrete) 数学运算模块库(数学运算模块库(Math operations)端口及子系统库(端口及子系统库(Ports and Subsystems) 查表模块库(查表模块库(Look-Up Table)用户定义函数模块(用户定义函数模块(User-Defined Functions) 非线性模块库(非线性模块库(Discontinuities)2022-6-7共 107 页 20simulink专业模块库专业模块库 CDMA参考模块 通讯电路模块 控制系统工具 DSP模块 TI DSP应用箱 Motorola DSP模块 模糊逻辑模块 S参数模型 More res
9、ource: http:/ 107 页 21基于simulink的仿真系统2022-6-7共 107 页 22仿真参数设置 算法器 仿真时间 仿真模式 仿真精度 误差容忍度 输出设置2022-6-7共 107 页 23Simulink的简单例子(1)使能模块2022-6-7共 107 页 24Simulink的简单例子(2)使能触发模块2022-6-7共 107 页 25Simulink仿真数字系统(1)2022-6-7共 107 页 26Simulink仿真数字系统(2)1nnnQJQKQ2022-6-7共 107 页 27简单的数字电路的设计10进制计数器2022-6-7共 107 页 2
10、8Link For ModelSim Link for ModelSim是把MATLAB/Simulink和针对FPGA 和ASIC的硬件设计流程无缝连结起来的联合仿真的接口扩展模块。它可以高效的在MATLAB/Simulink中验证ModelSim中的RTL模型。 备注:Matlab版本7.1以上,ModelSim SE PLUS 5.62022-6-7共 107 页 29一个综合的设计实例 抽取滤波器的设计 Toolboxes的FDA设定滤波器参数 M文件实现传输函数的分析 Simulink完成系统级的仿真 函数对ModelSim的输出数据进行FFT分析2022-6-7共 107 页 30
11、抽取滤波器框图2022-6-7共 107 页 31CIC 传递函数及频率响应4132)11()(zzzH2022-6-7共 107 页 32补偿滤波器设计hcic0=mfilt.cicdecim(32,1,4);hcic = cascade(dfilt.scalar(1/gain(hcic0),hcic0);hc= design(fdesign.ciccomp(1, . 4,20000,68200,.000075,110,352800);fvtool(hcic,hc,. cascade(hcic,hc),Fs,11289600 352800 11289600);2022-6-7共 107 页
12、33CIC and CIC compensator2022-6-7共 107 页 34半带滤波器h2=fdesign.decimator(2,halfband,.48200,110,176400);h=equiripple(h2);fvtool(h);2022-6-7共 107 页 35半带滤波器h3=fdesign.decimator(2,halfband,.4100,110,88200);h=equiripple(h3);fvtool(h);2022-6-7共 107 页 36整体滤波器设计hcic0=mfilt.cicdecim(32,1,4);hcic = cascade(dfilt.
13、scalar(1/gain(hcic0),hcic0);hc= design(fdesign.ciccomp(1, . 4,20000,68200,.000075,110,352800);h2=fdesign.decimator(2,halfband,. 48200,110,176400);h22=equiripple(h2);h3=fdesign.decimator(2,halfband,. 4100,110,88200);h33=equiripple(h3);h=cascade(hcic,hc,h22,h33);fvtool(h,Fs,11289600);fvtool(hcic,hc,h2
14、2,h33,. cascade(hcic,hc,h22,h33),Fs,11289600 352800 176400 88200 11289600);2022-6-7共 107 页 37Filter Design&Analysis设计滤波器系数2022-6-7共 107 页 38滤波器系数2022-6-7共 107 页 39Generate HDL2022-6-7共 107 页 40Generate HDL参数设置2022-6-7共 107 页 41filter.v2022-6-7共 107 页 42filter_tb.v2022-6-7共 107 页 43滤波器传输函数的分析2022-6-7
15、共 107 页 44Simulink 搭建的CIC2022-6-7共 107 页 45Simulink搭建的halfband2022-6-7共 107 页 46Simulink搭建的halfband2022-6-7共 107 页 47Simulink的系统仿真2022-6-7共 107 页 48输出数据FFT分析2022-6-7共 107 页 49MATLAB GUIDE(Graphical User Interface Development Environment)MATLAB图形用户界面开发环境2022-6-7共 107 页 50MATLAB GUI2022-6-7共 107 页 51界
16、面设计编辑器外观2022-6-7共 107 页 52工具栏2022-6-7共 107 页 53用户控件的放置2022-6-7共 107 页 54用户控件的属性编辑2022-6-7共 107 页 55用户控件属性对话框2022-6-7共 107 页 56用户控件回调函数的查看2022-6-7共 107 页 57用户控件的回调函数2022-6-7共 107 页 58OpeningFcn2022-6-7共 107 页 59Edit text控件2022-6-7共 107 页 60用户控件的回调函数22022-6-7共 107 页 61运行GUI2022-6-7共 107 页 62激活的GUI2022
17、-6-7共 107 页 63误差放大器放大倍数的计算2022-6-7共 107 页 64计算Aemin的回调函数2022-6-7共 107 页 65计算Aemin的回调函数2022-6-7共 107 页 66电源调整率2022-6-7共 107 页 67Search object2022-6-7共 107 页 682022-6-7共 107 页 69 Back2022-6-7共 107 页 70信宿模块信宿模块 以数值形式显示输入信号 悬浮信号显示器 为子系统或模型提供输出端口 信号显示器 当输入非零时停止仿真 中断输出信号 将仿真数据写入.mat文件 将仿真数据输出到matlab工作空间 使
18、用matlab图形显示器Back2022-6-7共 107 页 712022-6-7共 107 页 72 Back2022-6-7共 107 页 73 Back2022-6-7共 107 页 742022-6-7共 107 页 75 Back2022-6-7共 107 页 76用户定义函数模块用户定义函数模块 求取输入信号的数学函数值 M函数(对输入进行运算输出结果) S-函数模块 S-函数生成器 Back2022-6-7共 107 页 77固定步长模式解法器固定步长模式解法器ode5:缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。ode4:四阶龙格库塔法,
19、具有一定的计算精度。ode3:固定步长的二/三阶龙格库塔法。ode2:改进的欧拉法。ode1:欧拉法。discrete:是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统。 Back2022-6-7共 107 页 78误差容忍度Relative tolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。Absolute tolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。 Back2022-6
20、-7共 107 页 79输出选项Refine output:这个选项是精细输出,其在仿真输出太稀松时,simulink会产生额外的精细输出。可以设置仿真时间步间插入的输出点数,产生更光滑的输出曲线。精细输出只能在变步长模式中才能使用,并且在ode45效果最好。Produce additional output:它允许用户直接指定产生输出的时间点。用户可以指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改变仿真的步长。Produce specified output only:它的意思是让simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长
21、以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出。 Back 三、系统级建模工具三、系统级建模工具-Verilog-A2022-6-7共 107 页 80Verilog-A简介简介 Verilog是描述数字行为的常用工具,而SPICE则是描述模拟行为事实上的标准。 Verilog-A是一种高层次的模块化硬件描述语言,它用模块的形式来描述模拟系统及其子系统的结构和行为2022-6-7共 107 页 81Verilog-A语言对模拟电路的描述语言对模拟电路的描述一是行为描述一是行为描述:指用一些数学表达式或者传输函数来描述目标电路的行为,其描述范围可以从基本的电阻电
22、容到十分复杂的滤波器或其他模拟系统。二是结构描述二是结构描述:对各个子模块在系统中的用途以及子模块与子模块之间的连接关系进行描述,这可以理解为是对系统结构框图的描述。2022-6-7共 107 页 82提供多层次的行为及结构模型和提供多层次的行为及结构模型和多种行为模块描述方法多种行为模块描述方法 有限指数产生器limexp() 积分产生器idt() 微分产生器ddt() 延迟产生器delay()2022-6-7共 107 页 83良好的行为描述模型具有:良好的行为描述模型具有: 良好的拟合度良好的拟合度 宽的适用性宽的适用性 快速的执行效率快速的执行效率2022-6-7共 107 页 84V
23、erilog-A的编程的编程2022-6-7共 107 页 851、首先定义系统的结构和系统中模块的行为;2、用网表来定义整个系统结构;3、用子模块的互联来定义模块的内部连接关系;基本语法基本语法标识符:标识符:标识符用来对一个模块进行命名。标识符可以是任何的字符串、数字、$或者下划线。但是第一个字母不能是数字或者$但可以是下划线。 Shiftreg_a Busa_index _bu$32022-6-7共 107 页 86关键词:关键词:Verilog-A除了可以辨认Verilog HDL所定义的关键词外,还有特定的关键词。下面列出了Verilog-A中常用的关键词。注意:关键词只能用小写字母
24、来表示。abstol discipline from abs asin atanh ac_stim delay initial_step2022-6-7共 107 页 87系统任务和函数系统任务和函数:$用来引进一个系统任务或系统函数。比如:$display (“display a message”);$finish;2022-6-7共 107 页 88汇编指令:汇编指令:用来引进系统汇编指令。汇编程序接收到系统的汇编命令时就开始进行汇编工作。除非有新的汇编指令插入,否则一个汇编命令将在整个程序运行的过程起作用。例如: define wordsize 82022-6-7共 107 页 89 数
25、据类型:数据类型:Verilog-A HDL支持整数、实数和参数等数据类型。integer a1:64; / 定义了一个具有64个整数的阵列real float; / 定义了一个用来存储数据类型为实数的变量 real gain_factor1:30; / 定义了一个具有30个乘数的阵列展。2022-6-7共 107 页 90基本表达式基本表达式2022-6-7共 107 页 91模拟运算符模拟运算符 模拟运算符用于数学表达式中,返回一个值。若表达式是向量,则返回向量值,若表达式是标量,则返回标量值。 模拟运算符的约束: 大部分情况下,模拟运算符不能用在条件声明(if和case)中。但如果条件声
26、明的变量在仿真过程中不变则可以使用。2022-6-7共 107 页 92Verilog-A仿真仿真 在Verilog-A中,仿真需要用到analysis()这个函数。 几种常用的仿真分析类型2022-6-7共 107 页 93Verilog-A建模实例建模实例 要创建一个Verilog-A模拟模块或系统有两种方法,一种是直接打开编辑器输入Verilog-A代码,一种是使用Cadence中的向导来产生模块。下面先介绍用第一种方法来产生一个反相器的步骤。2022-6-7共 107 页 94反相器反相器1、在工作目录下新建一个库(Library),File-New-Cell View-,在Tool选
27、项中选择VerilogA-Editor,则可见View Name中会自动填入veriloga。填上Cell Name:inv。点击OK,至此对工作文件的创建完成。2022-6-7共 107 页 952022-6-7共 107 页 962、弹出图11.7.2所示编辑器(VI)2022-6-7共 107 页 97 以“/”开头引导的语句是注释语句。在Verilog-A中,为了保持程序的可读性,经常插入由“/”引导的注释语句。include语句用来插入一个在汇编过程中定义的源元件,它可以用来引用全局或者经常使用的定义或任务,而不用在程序中添加这些定义或任务的描述,使得整个程序看起来更为高效和整洁。整
28、个程序实体是由module和endmodule之间所包含的语句构成。紧跟在module后面的inv是此程序的文件名。2022-6-7共 107 页 983、创建symbol 在关闭前,SpectreHDL会自动对程序的合法性进行检查,如有语法错误会给出提示,修改后保存,会让读者选择是否创建symbol,此时单击yes,定义好管脚后,点击OK会弹出如果所示的symbol。2022-6-7共 107 页 994、仿真:新建个仿真文件夹。、仿真:新建个仿真文件夹。2022-6-7共 107 页 100 建立如图11.7.5所示电路仿真激励。其中输入信号是周期为100n,占空比为50%的脉冲。输出负载
29、1pF。观察输出波形如果11.7.6所示。2022-6-7共 107 页 101利用利用Cadence中的向导产生模拟模块中的向导产生模拟模块 首先,建立ModelWriter模块2022-6-7共 107 页 102填入Cell Name和View Name。单击OK。会弹出如图11.7.8所示的类型选项。选择VerilogA。 其次,在弹出的模型(图11.7.9)里面选择我们所需要的模块。2022-6-7共 107 页 1032022-6-7共 107 页 1042022-6-7共 107 页 105 本章主要介绍了系统仿真中常用的建模工具Matlab,包括Matlab中工具箱、m语言编程以及图形仿真界面Simulink,和模拟集成电路设计中可以用到的系统建模语言Verilog-A。 应用这些工具,设计者可以快速准确地建立所需要的系统模型。希望通过本章的介绍可以让读者掌握系统建模方法并可以进行系统仿真。2022-6-7共 107 页 106