《数字电路应用实验指导书(23页).doc》由会员分享,可在线阅读,更多相关《数字电路应用实验指导书(23页).doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-数字电路应用实验指导书-第 22 页数字电路应用实验指导书上海大学机电一体化工程中心2015年12月目 录一、 概述二、 实验一 比较器三、 实验二 码制转换器四、 实验三 加法器五、 实验四 优先编码器六、 实验五 七段译码器七、 实验六 计数器八、 实验七 移位寄存器九、 实验八 综合实验十、 附录A开发套件核心板ETL-005介绍十一、 附录B ETL-005管脚位置约束十二、 附录C QuartusII软件介绍一、 前言数字电路应用课是数字电路A的后续课程,本书是数字电路应用课的配套实验指导书。主要内容集中在用集成电路和Verilog语言进行时序逻辑电路设计,实验内容与数字电路A的实
2、验内容对应,实验旨在使学生学会用硬件设计语言Verilog进行数字逻辑电路中常用逻辑功能模块的设计,大规模集成电路FPGA/CPLD的开发过程,实验内容与数字电路A的实验相对应,学习用不同方法设计数字逻辑功能电路、解决简单的实际工程问题的基本技能。 本指导书的实验使用的装置为“易上手”系列FPGA开发套件和微型计算机组成的数字电路实验系统。在FPGA/CPLD的实验中,培养学生学习和掌握Verilog语言,以及它的开发环境QuartusII的操作过程。与数字电路A的内容相对应,数字电路应用课的实验最终也要构成如下图所示的颗粒灌装系统: 其工作原理和流程如下:(1)通过拨码开关设置每瓶要装糖果的
3、个数(两位十进制),通过编码器转换为BCD码,存入到寄存器中,寄存器的值可以通过一个译码器显示在七段数码管1上;(2)灌装的颗粒通过灌装装置上的漏斗落入下面传送带上的瓶中,漏斗上装有检测颗粒下落的光电传感器,每下落一个糖果,传感器发送一个脉冲,控制系统中的计数器对该脉冲进行计数,计数的结果与预置的每瓶灌装的颗粒数进行比较, 比较可以使用二进制或者BCD码,如果比较器两个输入的码制不同,需事先进行码制转换(将BCD转为二进制或者二进制转为BCD码);比较结果相等则使计数器停止计数,同时该信号控制关闭漏斗开关,停止颗粒下落,启动传送带换瓶等待下一次灌装。系统中加法器负责统计当前灌装总量,其数值送入
4、寄存器寄存,寄存器的值可以通过码制转换和译码器显示在七段数码管2上。(3)新瓶到位也由光电传感器检测,检测到瓶子以后,停止传送带移动,将计数器清零后启动计数器准备新一轮计数,打开漏斗开关进行新的灌装。系统重复执行步骤(2)过程。同数字电路A,本课程的实验仍采用分别设计系统中的功能模块,最终综合拼接的方法。开发套件核心板ETL-005的简单说明和各芯片管脚约束见附件A和B。实验一 比较器实验目的 (1) 熟悉Verilog语言的基本结构,了解基本运算符和赋值(2) 熟悉QuartusII的开发环境建立,以及仿真过程(3) 学会用Verilog语言实现组合逻辑电路的方法(4) 用Verilog语言
5、设计组合逻辑电路的比较器实验内容编写设计比较器的Verilog代码并仿真实验步骤和要求设计比较器,如下图所示:设计一个八位数比较器,输入为糖果计数器输出信号counter3:0和寄存器信号binReg3:0,输出信号bEQU为数据相等信号,输出信号bBig为counter数据大于binReg数据信号,输出信号bSmall为counter数据小于binReg数据信号。具体功能要求如下:两个输入数据为相等时,相等信号bEQU输出为1,否则输出为0; counter数据大于binReg数据时,输出信号bBig为1,否则为0;counter数据小于binReg数据信号时输出信号bSmall为1,否则为
6、0。电路管脚与信号定义如下:信号连接器件名管脚说明counter3DIP8PIN_87输入信号与拨码开关相连counter2DIP7PIN_86counter1DIP6PIN_84counter0DIP5PIN_82binReg 3DIP4PIN_81binReg 2DIP3PIN_80binReg 1DIP2PIN_77binReg 0DIP1PIN_76bBigD1PIN_187输出信号与LED指示灯相连bEQUD2PIN_185bSmallD3PIN_182(1) 将比较器进行设计软件仿真。(2) 完成系统开发板级模块调试和功能验证。实验结果:(1)绘制比较器的仿真波形图。(2)撰写实验
7、报告(含代码)。实验二 码制转换器实验目的 用Verilog语言设计组合逻辑电路的码制转换器实验内容编写设计码制转换器的Verilog代码并仿真实验步骤和要求设计BCD码到二进制的码制转换器,如下图所示:输入为一维数组Reg7.0,共有八位,低四位和高四位分别为一个10进制数的BCD码,这个码制转换器将这2位数的BCD转换为二进制输出bReg7.0。电路管脚与信号定义如下:信号连接器件名管脚说明Reg 7DIP8PIN_87输入信号与拨码开关相连Reg 6DIP7PIN_86Reg 5DIP6PIN_84Reg 4DIP5PIN_82Reg 3DIP4PIN_81Reg 2DIP3PIN_80
8、Reg 1DIP2PIN_77Reg 0DIP1PIN_76bReg7D8PIN_175输出信号与LED指示灯相连bReg6D7PIN_176bReg5D6PIN_179bReg4D5PIN_180bReg3D4PIN_181bReg2D3PIN_182bReg1D2PIN_185bReg0D1PIN_187(1) 将码制转换器进行设计软件仿真。(2) 完成系统开发板级模块调试和功能验证。实验结果:(1) 绘制码制转换器的仿真波形图。(2) 撰写实验报告(含代码)。实验三 加法器实验目的 用Verilog语言设计组合逻辑电路的加法器实验内容编写设计加法器的Verilog代码并仿真实验步骤和要求
9、设计加法器,如下图所示:输入为计数器的输出结果信号counter3.0和寄存器数据Reg3.0,输出为加法结果addResult3.0和进位C8。加法器功能要求如下:counter3.0与Reg7.0相加,输出结果addResult3.0和进位C。电路管脚与信号定义如下: 信号连接器件名管脚说明counter 3DIP8PIN_87输入信号与拨码开关相连counter 2DIP7PIN_86counter 1DIP6PIN_84counter 0DIP5PIN_82Reg 3DIP4PIN_81Reg 2DIP3PIN_80Reg 1DIP2PIN_77Reg 0DIP1PIN_76CD8PI
10、N_175输出信号与LED指示灯相连addResult 3D4PIN_181addResult 2D3PIN_182addResult 1D2PIN_185addResult 0D1PIN_187(1) 将加法器进行设计软件仿真。(2) 完成系统开发板级模块调试和功能验证。实验结果:(1) 绘制加法器的仿真波形图。(2) 撰写实验报告(含代码)。实验四 优先编码器实验目的 用Verilog语言设计组合逻辑电路的优先编码器实验内容编写设计优先编码器的Verilog代码并仿真实验步骤和要求编码器将用拨码开关的(或键盘)输入编码为对应的BCD码表示,送到译码器和码制转换器的输入进行相应的转换(该部分
11、电路在实验一中完成)。计数器负责统计灌装的颗粒数(脉冲数),与预设的数据(上述拨码开关输入)比较,结果用于进行换瓶控制。设计优先编码器,如下图所示:输入变量为每瓶糖果数设定拨码开关sW8.1信号,输出信号为与输入量对应的用BCD码表示的编码iReg3.0(一位开关)。电路实现根据拨码开关的设定,获得对应的BCD码表示的数字编码值的功能。例如开关sW1为0,则编码输出1;sW2为0,则编码输出2;依次类推。电路管脚与信号定义如下:信号连接器件名管脚说明sW 8DIP8PIN_87输入信号与拨码开关相连sW 7DIP7PIN_86sW 6DIP6PIN_84sW 5DIP5PIN_82sW 4DI
12、P4PIN_81sW 3DIP3PIN_80sW 2DIP2PIN_77sW 1DIP1PIN_76iReg 3D4PIN_181输出信号与LED指示灯相连iReg 2D3PIN_182iReg 1D2PIN_185iReg 0D1PIN_187(1) 将优先编码器进行设计软件仿真。(2) 完成系统开发板级模块调试和功能验证。实验结果:(1) 绘制优先编码器的仿真波形图。(2) 撰写实验报告(含代码)。实验五 七段译码器实验目的 用Verilog语言设计组合逻辑电路的七段译码器实验内容编写设计七段译码器的Verilog代码并仿真实验步骤和要求七段译码器和码制转换器是灌装系统中最常用的器件,它们
13、将用BCD码形式表示的预设灌装颗粒数转换为检测用的二进制数,同时将颗粒数显示在七段数码管上。设计BCD到七位数码管的译码器,如下图所示:输入为一维数组inRegH3.0和inRegL3.0,分别表示数码管高位数据和低位数据,采用BCD码表示;输出为一维数组oLight6.0和sel1.0,分别表示数码管的控制信号和数码管的片选控制信号,完成的功能就是把输入数据BCD码译码为LED数码管的控制信号。其中高位和低位通过译码器输出oLight6.0连接到LA0LG0,同时控制sel信号进行片选控制。七段数码管的详细电路图,请查看附录1中的电路图。电路管脚与信号定义如下:信号连接器件名管脚说明inRe
14、gH 3DIP8PIN_87输入信号与拨码开关相连inRegH 2DIP7PIN_86inRegH 1DIP6PIN_84inRegH 0DIP5PIN_82inRegL 3DIP4PIN_81inRegL 2DIP3PIN_80inRegL 1DIP2PIN_77inRegL 0DIP1PIN_76oLight 6SegGPIN_146数据输出信号与LED数码管oLight 5SegFPIN_145oLight 4SegEPIN_144oLight 3SegDPIN_163oLight 2SegCPIN_162oLight 1SegBPIN_161oLight 0SegAPIN_160sel
15、3led_cs3PIN_152数码管选片信号sel2led_cs2PIN_151sel1SW0PIN_70sel0SW1PIN_72(1) 完成单个七段译码器设计软件仿真。(2) 完成多个七段译码器设计软件仿真。(3) 完成系统开发板级模块调试和功能验证。实验结果:(1) 绘制译码器的仿真波形图。(2) 撰写实验报告(含代码)。实验六 计数器实验目的 用Verilog语言设计时序逻辑电路的计数器实验内容编写设计计数器的Verilog代码并仿真实验步骤和要求设计计数器,如下图所示:输入为糖果计数脉冲信号PULSE0、瓶到信号PULSE1、计数器数据与寄存器数据相等信号bEQU和总清零信号Rese
16、t,输出信号为计数信号Counter7.0。具体功能要求如下:当Reset为0时,计数器清零(输出全零);用实验箱上的脉冲输入信号PULSE0模拟计数脉冲(颗粒灌装过程),PULSE0脉冲信号PULSE0下降沿时,计数器计数;当比较器输出相等信号(bEQU为1)时,计数器停止计数并输出换瓶信号(可使用同一控制信号);当瓶到信号PULSE1为1时,计数器清零; 电路管脚与信号定义如下:信号连接器件名管脚说明Counter 7D8PIN_175输出信号与LED指示灯相连Counter 6D7PIN_176Counter 5D6PIN_179Counter 4D5PIN_180Counter 3D4
17、PIN_181Counter 2D3PIN_182Counter 1D2PIN_185Counter 0D1PIN_187ResetSW1PIN_70糖果计数脉冲信号PLUSE0SW2PIN_72瓶到信号PLUSE1SW3PIN_74计数器数据与寄存器数据相等信号,表示已满。bEQUDIP8PIN_87总清零(1) 将计数器进行设计软件仿真。(2) 完成系统开发板级模块调试和功能验证。实验结果:(1)绘制计数器的仿真波形图。(2)编写实验报告(含代码)。实验七 移位寄存器实验目的 用Verilog语言设计时序逻辑电路的移位寄存器实验内容编写设计移位寄存器的Verilog代码并仿真实验步骤和要求
18、设计寄存器,如下图所示:输入为编码器的输出信号code3.0、锁存时钟PULSE3和清零信号Reset,输出信号为寄存器8位数据Reg7.0。其功能要求如下:当清零信号Reset为0时数据Reg7.0输出为0;当清零信号Reset为0时,数据Reg7.0输出为0;其它情况下,当锁存时钟PULSE3下降沿时,读入数据code3.0,并保存到数据Reg3.0中,当锁存时钟PULSE3上升沿时,读入数据code3.0,并保存到数据Reg7.4中。电路管脚与信号定义如下: 信号连接器件名管脚说明ResetSW1PIN_70PULSE3移位寄存时钟。数据输入信号与拨码开关相连PULSE3SW4PIN_7
19、5code 3DIP4PIN_81code 2DIP3PIN_80code 1DIP2PIN_77code 0DIP1PIN_76Reg7D8PIN_175输出信号与LED指示灯相连Reg6D7PIN_176Reg5D6PIN_179Reg4D5PIN_180Reg3D4PIN_181Reg2D3PIN_182Reg1D2PIN_185Reg0D1PIN_187(1) 将移位寄存器进行设计软件仿真。(2) 完成系统开发板级模块调试和功能验证。实验结果:(1)绘制移位寄存器的仿真波形图。(2)编写实验报告(含代码)。实验八 综合实验实验目的 (1) 掌握Verilog模块设计和结构Verilog
20、设计(2) 掌握QUARTUS的数据综合和芯片配置(3) 完成整个灌装系统的设计实验内容(1)对整个系统中各模块进行结构拼接,并进行整体仿真(2)完成芯片配置和下载,验证系统实验步骤和要求(1)设计整个灌装系统,如下图所示:输入设定:每瓶糖果数设定使用拨码开关sW8.1、Reset为总清零、用PULSE0输入糖果计数脉冲信号、PULSE1给出新瓶到位信号,PULSE3作为锁存器时钟控制信号,与sW8.1同时使用,完成两位糖果灌装数输入。输出设定:计数器Counter7.0,静态oLight6.0、数码管片选信号sel1.0。 实验要求:将已经做过的各功能模块按原理图连接状态拼接,具体步骤如下:
21、系统总清零:Reset为0时,所有信号输出清零,包括计数器Counter7.0、数码显示静态oLight6.0、数码管片选信号sel1.0;PULSE0与拨码开关sW8.1连接优先编码器coder获得灌装数十位数字编码iReg3.0;iReg3.0一次存入Reg7.0的高四位,一次存入Reg7.0的低四位。PULSE0与拨码开关sW8.1获取灌装数的个位数编码iReg3.0设定数据Reg7.0连接译码器驱动LED数码管,输出为oLight6.0和sel1.0;糖果计数脉冲信号PULSE0连接计数器counter获得每瓶灌装的糖果颗粒数Counter7.0;糖果颗粒数Counter7.0和每瓶糖
22、果颗粒数目设定数据Reg7.0连接比较器comparator,获得每瓶数据相等信号bEQU;相等信号bEQU和瓶到信号PULSE1反馈连接计数器,对计数器进行控制。电路管脚与信号定义如下:信号连接器件名管脚说明sW 8DIP8PIN_87输入信号与拨码开关相连sW 7DIP7PIN_86sW 6DIP6PIN_84sW 5DIP5PIN_82sW 4DIP4PIN_81sW 3DIP3PIN_80sW 2DIP2PIN_77sW 1DIP1PIN_76oLight 6SegGPIN_146数据输出信号与LED数码管oLight 5SegFPIN_145oLight 4SegEPIN_144oL
23、ight 3SegDPIN_163oLight 2SegCPIN_162oLight 1SegBPIN_161oLight 0SegAPIN_160sel3led_cs3PIN_152数码管选片信号sel2led_cs2PIN_151sel1led_cs1PIN_150sel0led_cs0PIN_149ResetSW1PIN_70糖果计数脉冲信号PLUSE0SW2PIN_72瓶到信号PLUSE1SW3PIN_74计数器数据与寄存器数据相等信号,表示已满。PULSE3SW4PIN_75(1) 根据Verilog结构语法拼接所有模块。(2) 完成系统开发板级模块调试和功能验证。实验结果:(1)编
24、写系统TOP模块程序,并绘制相关仿真波形。(2)编写实验报告。附录A开发套件核心板ETL-005介绍1、实验平台硬件的介绍ETL-005开发套件核心板资源包括:Altera公司的Cyclone II系列中的EP2C5Q208C8N,EPCS4 Flash,贴片的100MHz和直插的50MHz 有源晶振,10脚JTAG接口,+1.2V、+3.3 V电源指示。另外还配有一根USB电源适配线、一根Xilinx PC-III并口下载线和一根Altera BB-II并口下载线等。ETL-005核心板ETL-005底板图1 ETL005板图ETL005有+1.2V,+2.5V,+3.3V三种电源,班上有工
25、作电压状态LED指示,当核心板安装在开发底板上、底板接通电源后,核心板上+1.2V,+2.5V,+3.3V的LED电源指示灯亮起,指示该核心板已接通电源,可以正常工作。核心板FPGA外部使用100MHz贴片形式和50MHz直插形式的两种有源晶振,后者可以通过插拔的方式更换成任意频率的晶振,也可以在 FPGA 内部进行分频或利用 FPGA内部 PLL 倍频等途径来得到其它频率的时钟源。芯片上24脚对应100Hz晶振,23脚对应50Hz晶振。可以如下约束set_location_assignment PIN_24 -to clk_100set_location_assignment PIN_23
26、-to clk_50为了下载配置数据到 FPGA,ETL-005核心板对于该核心板的JTAG下载模式,提供了JTAG 10PIN牛角插座供下载器使用。该核心板配置了存储容量为4Mbit的Altera专用EPCS4SI8N芯片(Flash)。配置芯片连接原理图如下图所示:EPCS4S电路原理图EP2C5Q208C8N芯片上的I/O接口通过核心板背面的80管脚贴片连接器连接到底板上,底板上对应的接口信号的管脚位置约束参照附录B在安装好软件QuantusII后,就可以开始进行各种实验。LED指示灯电路:开发板提供了8个红色贴片LED灯,与8个拨动开关相对应,拨动开关可以通过FPGA控制LED的状态,
27、以指示当前试验中的各种状态的信息。LED等分布在开发底板的顶部,位置标识如下图所示:LED的原理图如下图所示:七段数码管显示:开发板提供了4位7段的数码管显示,用于显示任何数字或字母信息。开发板自带的时钟演示程序可以在4位数码管上实时地显示分钟和秒钟信息。由于七段码 LED公共端连接到 VCC(共阳极型) ,当 FPGA对应的 IO引脚输出低电平时,对应的七段码 LED 中的 LED 点亮;当 FPGA 对应的 IO 引脚输出高电平时,对应的七段码 LED 中的 LED 熄灭。其信号引脚与 FPGA 的 IO 接口的对应关系见原理图。七段码 LED 是开发板上提供的另一个方便开发人员调试的显示
28、设备。开发板上使用的七段码 LED是共阳极型,af和 dp这八个 LED原理图均与FPGA 的 IO 引脚直接相连,其对应段名称如图所示。 七段码LEDLED接口的硬件原理图如下图所示:按键和开关电路:为了方便开发人员作一些简单的、手动的逻辑输入,开发板提供了4位瞬时接通型按键开关和8位拨码开关,位于开发底板的右下侧,用于核心板的复位和LED灯状态信息的输入。4位按键开关的位置标识如下图所示:按键位置标识SW按键开关原理图如下图所示:图 01 按键开关电路原理图8位拨码开关的位置标识如下图所示: 1 0拨动开关位置标识原理图如下图所示: 拨动开关电路原理图DIP开关向上拨动为1,向下拨动为0.
29、默认的开关状态为全部向下,即全部为0。附录B ETL-005管脚位置约束set_location_assignment PIN_24 -to clk_100set_location_assignment PIN_23 -to clk_50set_location_assignment PIN_70 -to SW0set_location_assignment PIN_72 -to SW1set_location_assignment PIN_74 -to SW2set_location_assignment PIN_75 -to SW3set_location_assignment PIN_7
30、6 -to dip0set_location_assignment PIN_77 -to dip1set_location_assignment PIN_80 -to dip2set_location_assignment PIN_81 -to dip3set_location_assignment PIN_82 -to dip4set_location_assignment PIN_84 -to dip5set_location_assignment PIN_86 -to dip6set_location_assignment PIN_87 -to dip7# CLOCK, LED#set_
31、location_assignment PIN_152 -to led_csset_location_assignment PIN_151 -to led_csset_location_assignment PIN_150 -to led_csset_location_assignment PIN_149 -to led_csset_location_assignment PIN_160 -to led_segset_location_assignment PIN_161 -to led_segset_location_assignment PIN_162 -to led_segset_loc
32、ation_assignment PIN_163 -to led_segset_location_assignment PIN_144 -to led_segset_location_assignment PIN_145 -to led_segset_location_assignment PIN_146 -to led_seg#set_location_assignment PIN_ -to led_dpset_location_assignment PIN_147 -to led_segset_location_assignment PIN_175 -to led7set_location
33、_assignment PIN_176 -to led6set_location_assignment PIN_179 -to led5set_location_assignment PIN_180 -to led4set_location_assignment PIN_181 -to led3set_location_assignment PIN_182 -to led2set_location_assignment PIN_185 -to led1set_location_assignment PIN_187 -to led0附录C QuartusII软件介绍Quartus II 是Alt
34、era公司的综合性PLD开发软件,支持原理图、Verilog、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。如何来使用QuartusII呢?我们通过设计一个四路选通器来进行说明。假设要设计一个如下图所示的功能;aYmuxcbds2图3 四路选选通器它的真值表如下:S1S0Y00a01b10c11d使用QuartusII的步骤如下:(1)打开quartusII,在桌面或菜单中点击图标,打开QuartusII软件(2)点击菜单FileNew
35、 Project Wizard.,建立一个新的工程,输入工程的名称muxfour, 如下图所示。(3)点击Next,出现添加文件的界面,如下图所示,这里可以添加工程所需的Verilog文件,目前我们还没有任何建立的Verilog,因此可直接点击Next。(4)上一步骤点击Next后,出现如下图所示界面:这个界面用来设置芯片的型号的,我们在Device Family中选择Cyclone II,在Package中选择Any QFP 选择Pin count为208,Speed grade为8,然后在Available Device中选择EP2C5Q208C8这个芯片型号。(5)点击Next后,本次新
36、建工程的报告,检查准确无误可以点击finish,如果有问题可以点击Back返回进行重新配置。(6)新建好一个工程后,我们在工具栏上点击图标,弹出如左图所示对话框:选择Verilog File,点击OK。(8)在新建的文件中,输入Verilog代码,如下页图所示:在工具兰点击保存按钮,保存文件,注意保存的文件名要和代码中实体Entity的名称要一样。(9)在工具栏中点击按钮,进行编译。3、QuartusII仿真步骤(1)在工具栏上点击图标,弹出如下对话框:选择Vector WaveForm file,点击OK。(2)选择菜单ViewUtility WindowsNode finder,会出现一个
37、Node Finder的界面。 (3)点击List,会列出我们在muxfour中所用到的Node,如下图所示:(4)将Node Finder中出现的Node拖放到波形文件中,如下图所示:(5)选择菜单EditEnd Time, 设置仿真的终止时间,我们填入500us,如下图所示:(5)在左边工具栏中为每个输入信号选择不同的信号(具体每个信号模式的含义在教学中学习),如下图所示:(6)保存波形图,为输入文件名muxfour.vwf。(7)点击工具栏中按钮,弹出设置对话框,在左边下拉菜单中选择Simulator Settings,在Simulation Input中选择,我们上一步保存的muxfo
38、ur.vwf文件,点击OK。(8)选择菜单ProcessingGenerate Functional Simulation Netlist,生成仿真的网表。(9)在工具栏中点击,会生成仿真的波形图,如下图所示:3、QuartusII下载过程(1)管脚的分配,点击工具栏,出现管脚的分配,可根据需要将设计中需要的输入输出的节点,分配到实际的FPGA/CPLD的管脚上,然后重新编译,就生成最终的文件muxfour.sof。(2)代码下载,将仿真器连接到FPGA的JTAG接口上,另一端USB口连接电脑,点击工具栏,弹出如下对话框:点击HardWare Setup,弹出以下窗口:选择USB-Blaster执行硬件添加。选择Add File,选择扩展名为pof的文件(已经编译好的目标文件)。选择Program/Configue栏中所有项。连接好硬件,然后就可点击start进行下载。下载后,即可以开始运行程序。