MulTIsim是依据SPICE的电路仿真软件,SPICE(SimulaTIon Program with Intergrated Circuit Emphasis)是“侧重于集成电路的模拟程序”的简称,在1975年由加利福尼亚大学伯克莱分校开发。在MulTIsim9中,需求另装置MulTIMCU进行单片机仿真。NI(National Instruments) Multisim10 将MuitiMCU称为MCU Module,不需求独自装置,能够与Multisim中的SPICE模型电路协同仿真,支撑Intel/Atmel的8051/8052 和 Microchip的 PIC16F84a,典型的外设有RAM和ROM,键盘,图形和文字LCD,并有完好的调试功用,包含设置断点,检查寄存器,改写内存等。支撑C言语,能够编写头文件和运用库,还能够将加载的外部二进制文件反汇编。Multisim10下载
这儿咱们经过一个简略的带有复位功用的计数器的比如来阐明在NI Multisim10中怎么进行单片机开发以及怎么与SPICE模型电路协同仿真。
MCU(Microcontroller Unit)即单片机是咱们都比较了解并常用的电子器材,由于其广泛的运用,所以用单片机规划电路是电子技术人员必备的技术。关于初学者,能够先从软件仿真下手。咱们知道运用Proteus软件能够进行单片机的软件仿真,Multisim相同也能够。
假如你对Multisim比较了解,那必定对里边的安捷伦(Agilent)54622D混合信号示波器等仪器形象很深入吧,由于它与实在的仪器面板和操作简直彻底相同。Multisim里象这种仿照实践仪器的还有安捷伦的33120A恣意波形函数发生器和34401A万用表,泰克(Tektronix)的TDS2024四通道示波器。充分运用这些仪器,就比如具有了一个实在的实验室,你能够用33120A恣意波形函数发生器给单片机供给输入信号,用54622D或TDS2024示波器观看模拟信号,或用54622D的逻辑分析仪功用检查单片机多个管脚数字信号的输出。鄙人面的比如里咱们将用54622D来调查复位信号。
建立电路设置MCU
建好的电路图如图1所示,各器材的称号等信息如附表所示。需求阐明的是电路图中的单片机不必衔接晶振也能够进行仿真,时钟频率(速度)的设置见下文。
附表
建立电路时,当将单片机U1放入电路图中时,会呈现MCU导游,如图2所示。第一步,别离输入作业区途径和作业区称号。作业区称号恣意,这儿输入MCUCosimWS。第二步,如图3所示,在项目类型(Project type)下拉框有两个选项:规范(Standard)和加载外部Hex文件(Load External Hex File),你能够在Keil等环境下编写汇编和C源程序,然后生成Hex文件,再经过“加载外部Hex文件”导入。限于篇幅这儿选规范(Standard),接着在“编程言语”(Programming language)下拉框里会有两个选项:C和汇编(Assembly),假如挑选C,则在汇编器/编译器东西(Assembler/Compiler tool)下拉框会呈现Hi-Tech C51-Lite compiler,咱们这儿挑选汇编(Assembly),则呈现8051/8052 Metalink assembler。接下来在项目称号(Project name)里输入称号,如CosimProject。第三步,如图4所示,对话框里有两个选项:创立空项目(Create empty project)和添加源文件(Add source file)。挑选添加源文件,点击完结。保存文件,键入M10Cosim作为文件名,然后检查“规划东西箱”(Design Toolbox),应如图5所示。
你或许更乐意用C来编写程序,而不是汇编,或两个都用,或还想引进外部Hex文件,这都能够经过用“MCU代码管理器”添加MCU项目来处理。在规划东西箱里右键单击MCUCosimWS,挑选“MCU代码管理器”(MCU Code Manager),点击“新MCU项目”(New MCU Project)按钮,挑选“项目类型”(Project Type),能够是规范(Standard)或加载外部Hex文件(Load External Hex File),这儿选“规范”,接着输入称号,如Cosim_C_Project,确认后就能够在MCU代码管理器对话框里进行下一步设置了,能够创立新文件,设置汇编器/编译器等等。如图6所示,这时现已多了一个Cosim_C_Project项目(未添加C代码源文件),前面图标空心的方框阐明它不是“当时运用的项目”(Active MCU Project)。
编写并编译MCU源程序
双击CosimProject下的main.asm输入程序,程序清单及注释如下:
由于汇编器是Metalink assembler,具体的宏命令等能够参阅其用户手册。编写好程序后,挑选菜单MCU→MCU 8051 U1→Build,这儿的下拉子菜单或许是“MCU 8051 U2”或“U3”,首要对应电路图中单片机的符号称号,Build的成果会输出到Spreadsheet View中。
运转程序并用示波器调查复位进程
汇编程序编译经往后,就能够回到电路图窗口,点击东西栏的运转按钮,这时在七段数码管上就应该循环显现0到9,假如显现过快或过慢,能够调整源程序中的COUNT_NUM,改动延时时刻,或双击U1,在805x对话框的Value标签里设置“时钟速度”(Clock Speed)。
电路中为SPICE模型的C1和R1的作用是延伸复位引脚坚持高电平的时刻,防止因复位电压继续时刻过短而引起复位失利。双击示波器XSC1,按示波器面板上的POWER键,翻开示波器,点击东西栏的运转按钮,这时调整示波器的电压和时刻刻度,得到图7所示的复位引脚电压的改变,每个刻度是100μs,高电平继续了大约一个刻度,可见在加电时,单片机没有马上运转,有一段推迟,推迟的时刻应该足以使其内部电压和振动都处于稳态。按下复位键S1时的波形如图8所示,这时每个刻度是50μs,波形平顶的部分是按键按下的时刻,大约20μs,之后电压逐步下降,当降到约3V时,7段数码管开端计数,阐明单片机开端作业,由图8可知复位时刻被延伸到大约100μs。
其原理是加电瞬间或按键按下到松开之间,电容无电荷,两头电压为0V,单片机的RST引脚的电压瞬间被提升到VCC(5V)。加电之后或按键松开,电容开端充电,两头电压逐步添加,电阻的电压(RST引脚电压)由5V逐步下降,因此延伸了复位引脚坚持高电平的时刻。实践器材对复位继续时刻的要求一般在两个机器周期,所以100微秒的复位时刻要求51单片机的晶振频率不低于0.24MHz。当然一般情况下是依据晶振频率确认C1和R1的值,这能够依据求解一阶微分方程得到其充放电时刻,或参阅单片机的用户手册。
调试程序
挑选菜单MCU→MCU 8051 U1→Debug View,能够看到文本区上面有下拉菜单并有两种挑选,对应反汇编(disassembly)和列表汇编(listing assembly),简略的说,前者是由ROM的内容得到,后者是源文件编译后的成果。双击“规划东西箱”的main.asm,在源文件修正窗口右键单击句子为“MOVC A,@A+DPTR”的一行,挑选“设置/铲除断点”(Toggle Breakpoint),在左边会呈现一个实心圆,点击“运转”,程序将停在该行,只不过是在“调试视图”(Debug View)的列表汇编窗口下,一起在实心圆上多出了一个黄色箭头。点击MCU-》 MCU 8051 U1-》Memory View,翻开MCU存储器视图,在该视图能够检查特别函数寄存器(SFR),内部RAM(IRAM),内部ROM(IROM),外部RAM(XRAM)。在SFR表格内调查ACC的值,此刻应该为“00”,在IRAM里调查地址为21H的值,由于“MOV SP,#20H”句子将21H作为仓库的第一个存储字节的地址,断点的前一处句子“PUSH ACC”使该字节存储ACC的值,此刻也为“00”。再点“运转”,程序第2次停在断点处,调查SFR中的ACC和IRAM中的21H,如图9所示应,两个单元格里的值都应为“01”,你还能够双击该单元格进行修正,该值也正是七段数码管行将显现的下一个数。点击MCU菜单,能够看到除了设置断点以外还可单步进入(Step into),遇到函数时进入函数内部;越过(Step over),即不进入函数;跳出(Step out),即跳出函数到调用函数的下一条句子。
结束语
本文以一个简略的电路介绍了在NI Multisim下怎么进行SPICE模型(这儿首要指C1和R1)和8051 MCU的协同仿真。NI Multisim10不光有多种编译和调试功用,还供给了RAM,ROM,键盘,液晶屏等外设,是初学单片机的抱负东西。把握了根本的硬件结构,汇编指令和调试办法后,读者能够运用Multisim开发更杂乱的体系并仿真,为下一步规划实践的硬件电路做准备。
阐明:由于单片机的电流是有约束的,不能太大,否则会焚毁单片机的。所以应在数码管的CA端和VCC端之直接一个限流电阻(100欧姆);或许在单片机与数码管之直接入一个排阻(7个)也能够,这样仿真时就不会焚毁单片机了。