数字秒表实验报告-EDA_第1页
数字秒表实验报告-EDA_第2页
数字秒表实验报告-EDA_第3页
数字秒表实验报告-EDA_第4页
数字秒表实验报告-EDA_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE 33 -EDA课程设计题目:基于VHDL的数字秒表设计学生姓名 _学 号 _学 院 _专 业 _指导教师 _二零一二年十二月基于VHDL的数字秒表设计摘要当前电子系统的设计正朝着速度快,容量大,体积小,质量轻,省电的方向发展。推动该潮流迅速发展的决定性因素就是使用了现代化的EDA设计工具。此次课程设计先确定了系统的逻辑功能,选择电路结构,然后确定并设计电路所需的数据处理以及控制模块,在Quartus II上以超高速硬件描述语言VHDL为系统逻辑描述方法完成了数字秒表所需的分频模块,十进制计数控制模块,六进制计数控制模块与顶层设计和引脚分配,对其进行编译仿真,并下载到实验板上实际验证,

2、通过本设计锻炼了计算机应用能力、VHDL语言的编程能力和Quartus II的使用能力,此次设计圆满完成了用VHDL语言设计1/1000秒数字秒表并仿真和实际下载到ALTERA公司的ACEX1K系列的EP1K30TC144-3中实现。关键词:EDA、Quartus II、VHDL、模块、仿真、ACEX1KAbstractThe electronic system design is moving speed, large capacity, small volume, light weight, energy saving direction. The trend of rapid devel

3、opment of determinant is the use of modern EDA design tools. This course is designed to determine the logic function of the system, establish the algorithm process, selection of circuit structure and circuit design, and then determine the desired data processing and control module, in the Quartus II

4、 to very high speed hardware description language VHDL as the system logical description method for completing the digital stopwatch desired frequency module, decimal counting control module, base six counting control module with top design and pin assignment, the compiled simulation, and downloaded

5、 to the experiments on actual test and verify, through the design of exercise ability of computer application and VHDL programming language and Quartus II using capability, the design was completed by VHDL language design 1/1000 seconds stopwatch and simulation and the actual download to ALTERA comp

6、anys ACEX1K series EP1K30TC144-3 implementation.Key Words:EDA、Quartus II、VHDL、Module、Simulation、ACEX1K目录摘要2 Abstract2一、设计要求4二、设计思想与方案论证42.1 设计思想42.2 方案论证4三、系统设计53.1 顶层电路设计53.2时钟分频电路模块63.3十进制计数控制模块73.4六进制计数控制模块7四、系统仿真84.1 模块仿真84.1.1 时钟分频电路模块仿真 84.1.2 十进制计数控制模块仿真94.1.3 六进制计数控制模块仿真94.2 总体仿真10五、下载实现105.

7、1 引脚分配115.2 下载验证11六、问题与不足13七、心得体会13参考文献14附录14附录1 :本设计各模块代码14设计要求设计用于体育比赛用的数字秒表,要求1、 计时精度大于1/1000秒,计时器能显示1/1000秒的时间,提供给计时器内部定时的时钟频率为12MHz;计时器的最长计时时间为1小时,为此需要一个7位的显示器,显示的最长时间为59分59.999秒2、设计有复位和起/停开关(1) 复位开关用来使计时器清零,并做好计时准备。 (2) 起/停开关的使用方法与传统的机械式计时器相同,即按一下起/停开关,启动计时器开始计时,再按一下起/停开关计时终止。 (3) 复位开关可以在任何情况下

8、使用,即使在计时过程中,只要按一下复位开关,计时进程立刻终止,并对计时器清零。二、设计思想与方案论证2.1设计思想通过分频器将12M晶振所提供的信号进行6000分频,生成脉冲作为计时信号,经计数器累加计数实现数字秒表计数的功能。设计采用七位LED数码管显示分、秒,需要5个10计数器和2个模6计数器。使用按键开关可实现开始/结束计时操作以及复位清零操作。2.2方案论证利用VHDL语言进行数字秒表设计有多种方法。可以利用原件例化语句将各模块联系起来,也可以使用原理图的方法实现此功能,考虑到此次设计中端口众多,使用例化语句繁琐易错,因此采用了条理清晰的绘制原理图的方法生成顶层文件,实现数字秒表功能。

9、在设计中可以将每个单独的功能写成一个独立的VHDL文件,此次设计中没有将控制模块独立出来,而是将它融合到十进制计数程序和六进制计数程序中,最终生成十进制计数控制器和六进制计数控制器。虽然显得繁琐,但是比较易于理解,程序中也比较容易操作。系统设计整个系统设计是采用自顶向下分析,自底向上设计。将数字秒表系统的整体分解为各个模块电路。该部分详细介绍了数字秒表系统的各个模块的设计,并对各个模块的每一个部分进行了分析,在第四部分对系统模型进行了访真与程序调试。3.1 顶层电路设计在顶层设计中,要对内部分各功能块的连接关系和对外的接口关系进行描述,而功能块实际的逻辑功能和具体的实现形式则由下一层模块来描述

10、。3-1数字秒表原理图3-2顶层电路图根据数字秒表的原理图来进行顶层文件的设计。此次设计中使用了总线,从而简化了顶层电路图的绘制。3.2 时钟分频电路模块在基于EDA技术的数字电路系统设计中,分频电路应用十分广泛。常常用分频电路来得到数字系统中各种不同频率的控制信号。所谓分频电路,就是将一个给定的频率较高的数字输入信号经过适当处理后,产生一个或数个频率较低的数字输出信号。本设计需要一个计时范围为0.001s59分59.999秒的秒表,首先输入一个频率为12MHZ时钟信号源,由CLK输入,经其进行6000分频后获得一个比较精确的1000Hz计时脉冲,即周期为1/1000秒的计时脉冲,由CLR_C

11、NT输出。3-3分频器符号3.3 十进制计数控制模块计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。此次设计中为程序方便没有将按键控制功能单独设为一个模块,而是将其添加到了普通十进制计数器程序中,将两者综合生成十进制计数控制模块。3-4十进制计数控制模块符号其中CLK为时钟信号输入端、RST为复位信号输入端、 EN为使能控制信号输入端、 DOUT3.0为十进制计数数据输出端、 COUT为进位信号输出端。3.4 六进制计数控制模块六进制计数器与十进制计数器类似,同样此处为程序方便没有将按键

12、控制功能单独设为一个模块,而是将其添加到了普通六进制计数器程序中,将两者综合生成六进制计数控制模块。3-5六进制计数控制模块符号其中CLK为时钟信号输入端、RST为复位信号输入端、 EN为使能控制信号输入端、 DOUT3.0为六进制计数数据输出端、 COUT为进位信号输出端。系统仿真系统设计完成后需要对其编译仿真,观看仿真波形图来判断设计的是否以实现期望功能。时序仿真也叫后仿真,时序仿真使用布局布线后器件给出的模块和连线的延时信息, 在最坏的情况下对电路的行为作出实际地估价。时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计

13、包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有,时序仿真波形会有毛刺现象。4.1 模块仿真4.1.1 时钟分频电路模块仿真4-1时钟分频电路模块仿真结果4.1.2 十进制计数控制模块仿真4-2十进制计数控制模块仿真结果4.1.3 六进制计数控制模块仿真4-3六进制计数控制模块仿真结果4.2 总体仿真4-4总体仿真结果下载实现EDA设计最终要下载到实际硬件中进行测试才可检测设计的是否可靠,在现代化的软件中利用清晰明了的算法编写程序,然后把程序下载到可编程芯片中自动进行调试,大大方便了现有工作人员,减轻了其工作量,不用再在纸上画

14、好算好逻辑门电路,再人工装成电路。Quartus II软件编译仿真功能强大,使用方便,但是也有很多问题不会在软件仿真时出现,不能最终判定设计是完善的,下载到硬件中实际运行才能检测设计是否可靠。此次设计采用ACEX1K系列的EP1K30TC144-3中实现,根据需要实现的功能最终选用了其中的模式0。5.1 引脚分配为实现数字秒表的规定功能,需用到一个12M的时钟源,两个电平按键(一个用来进行复位功能,一个用来控制数字秒表的开启与关闭),除此之外还需要七个数码管(高两位数码管用于显示分,第三位的数码管用于显示时分秒、百分秒、千分秒,剩余的中间两位数码管用来显示秒)。具体的引脚分配如下:5-1引脚分

15、配图5.2 下载验证下载到芯片需要连接实验板与电脑,我们采用USB BLASTER来连接下载。具体的下载操作此处不再叙述。此次设计下载到试验箱后的具体操作如下:1、将短路帽接到clock0中12M处;2、按下按键3,数字秒表开始计时,再次按下按键3,数码管停止计时并持续显示最终的结果;再次按下按键3,数字秒表在停止时数的基础上继续计时;3、无论在数字秒表工作的任何时刻,按下按键4,都会使数字秒表计时清零。实际部分操作的效果图如下:分 / 秒 / 十分、百分、千分秒分 / 秒 / 十分、百分、千分秒六、问题与不足此次实验虽然实现了题目要求的基本功能,但并没有对功能进行必要的拓展,着实显得内容空洞

16、,除此之外由于大部分时间都浪费在了考虑太多错误问题导致最终没有时间来考虑按键毛刺对实验结果的影响。七、心得体会此次课程设计题目简单,但由于自身对EDA掌握程度有限,以及对试验箱不熟悉,导致把简单的问题复杂化走了不少弯路。起初看到题目,没有仔细审题,将题目中要求的按键要实现的功能理解错误,接近尾声时才发现题目理解错了;由于对试验箱各部件不熟悉加上近期频繁接触单片机,因此错误认为EDA中按键也是产生脉冲的,想通过控制程序对脉冲进行控制,又想到当按键按下松开瞬间秒表开始工作,再次按下按键时秒表停止工作,第一次按键按下持续时间长短对结果无影响,所以就对程序进行了大改进,最终十进制计数控制程序仅对第一位

17、数码管有效,对高位数码管并不起控制作用。在进行测试时偶然间发现实验箱上按键能保持电平,才恍然大悟把所有的问题都复杂化了,删掉了复杂的变量控制程序,留下最简单的,最终实现了题目要求的功能。通过此次课程设计,学到了很多。即使再简单的题目也会因为知识的匮乏而显得困难,因此需要加强对EDA知识的学习;现阶段接触到的单片机按键产生脉冲,因此就定势思维的认为EDA中也是如此,导致了一连串的复杂化,可能翻一下课表,查一下不确定的问题,就不会出现此类问题;实验是学习EDA最好的方法,在没做实验前,纯理论的学习效率很低,接触实验后,才明白好多不懂的问题,做了一个完整的题目就对EDA的基本流程有了大致的了解,胜于

18、看几遍书,以后要加强实验练习。参考文献1潘松黄继业编著.EDA技术使用教程VHDL版(第四版).科学出版社.2011附录附录1 :此次设计各模块代码时钟分频电路模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLKGEN IS PORT( CLK : IN STD_LOGIC; CLR_CNT: OUT STD_LOGIC );END CLKGEN;ARCHITECTURE behav OF CLKGEN IS SIGNAL MIDDLECLK : STD_LOGIC;BEGIN

19、PROCESS(CLK) VARIABLE K :INTEGER:=6000;BEGIN IF CLKEVENT AND CLK = 1 THEN K := K-1; IF K = 0 THEN MIDDLECLK = NOT MIDDLECLK; K := 6000; END IF; END IF;END PROCESS;CLR_CNT 0);ELSIF CLKEVENT AND CLK = 1 THENIF EN = 1 THENIF Q0);END IF;ELSE Q := Q ;END IF;END IF;IF Q = 0101 THEN COUT = 0;ELSE COUT = 1;

20、END IF;DOUT0);ELSIF CLKEVENT AND CLK = 1 THENIF EN = 1 THENIF Q0);END IF;ELSE Q := Q ;END IF;END IF;IF Q = 1001 THEN COUT = 0;ELSE COUT = 1;END IF;DOUT= Q ;END PROCESS;END behav;附录资料:不需要的可以自行删除 perl函数应用一、进程处理函数1、进程启动函数函数名eval调用语法eval(string)解说将string看作Perl语句执行。正确执行后,系统变量$为空串,如果有错误,$中为错误信息。例子$print =

21、 print (hello,worldn);eval ($print);结果输出hello, world函数名system调用语法system(list)解说list中第一个元素为程序名,其余为参数。system启动一个进程运行程序并等待其结束,程序结束后错误代码左移八位成为返回值。例子proglist = (echo, hello,world!);system(proglist);结果输出hello, world!函数名fork调用语法procid = fork();解说创建程序的两个拷贝-父进程和子进程-同时运行。子进程返回零,父进程返回非零值,此值为子程序的进程ID号。例子$retval

22、 = fork();if ($retval = 0) # this is the child process exit; # this terminates the child process else # this is the parent process结果输出无函数名pipe调用语法pipe (infile, outfile);解说与fork合用,给父进程和子进程提供通信的方式。送到outfile文件变量的信息可以通过infile文件变量读取。步骤:1、调用pipe2、用fork将程序分成父进程和子进程3、一个进程关掉infile,另一个关掉outfile例子pipe (INPUT,

23、OUTPUT);$retval = fork();if ($retval != 0) # this is the parent process close (INPUT); print (Enter a line of input:n); $line = ; print OUTPUT ($line); else # this is the child process close (OUTPUT); $line = ; print ($line); exit (0);结果输出$programEnter a line of input:Here is a test lineHere is a te

24、st line$函数名exec调用语法exec (list);解说与system类似,区别是启动新进程前结束当前程序。常与fork合用,当fork分成两个进程后,子进程用exec启动另一个程序。例子 结果输出函数名syscall调用语法syscall (list);解说调用系统函数,list第一个元素是系统调用名,其余为参数。如果参数是数字,就转化成C的整型数(type int)。否则传递字符串的指针。详见UNIX的帮助或Perl文档。使用syscall必须包含文件syscall.pl,即:require (syscall.ph); 例子结果输出2、进程终止函数函数名Die调用语法die (m

25、essage);解说终止程序并向STDERR输出错误信息。message可以为字符串或列表。如果最后一个参数不包含换行符,则程序文件名和行号也被输出。例子die (Cannot open input file);结果输出Cannot open input file at myprog line 6.函数名warn调用语法warn (message);解说与die类似,区别是不终止程序。例子warn(Danger! Danger!n);结果输出Danger! Danger!函数名exit调用语法exit (retcode);解说终止程序并指定返回值。例子exit(2);结果输出无函数名kill调

26、用语法kill (signal, proclist);解说给一组进程发送信号。signal是发送的数字信号,9为杀掉进程。proclist是进程ID列表。详见kill的UNIX帮助。例子结果输出3、进程控制函数函数名sleep调用语法sleep (time);解说将程序暂停一段时间。time是停止的秒数。返回值为实际停止的秒数。例子sleep (5);结果输出无函数名wait调用语法procid = wait();解说暂停程序执行,等待子进程终止。不需要参数,返回值为子进程ID,如果没有子进程,返回-1。例子结果输出函数名waitpid调用语法waitpid (procid, waitflag

27、);解说暂停程序执行,等待特定的子进程终止。procid为等待的进程ID例子$procid = fork();if ($procid = 0) # this is the child process print (this line is printed firstn); exit(0); else # this is the parent process waitpid ($procid, 0); print (this line is printed lastn);结果输出$ programthis line is printed firstthis line is printed las

28、t$4、其它控制函数函数名caller调用语法subinfo = caller();解说返回调用者的程序名和行号,用于Perl Debugger。返回值为三元素的列表:1、调用处的包名2、调用者文件名3、调用处的行号例子结果输出函数名chroot调用语法chroot (dir);解说改变程序的根目录,详见chroot帮助。例子结果输出函数名local调用语法local($variable);解说在语句块(由大括号包围的语句集合)中定义局域变量,仅在此语句块中起作用,对其的改变不对块外同名变量造成影响。千万不要在循环中使用,否则每次循环都定义一个新的局域变量!例子结果输出函数名times调用语法

29、timelist = times解说返回该程序及所有子进程消耗的工作时间。返回值为四个浮点数的列表:1、程序耗用的用户时间2、程序耗用的系统时间3、子进程耗用的用户时间4、子进程耗用的系统时间例子结果输出二、数学函数函数名sin调用语法retval = sin (value);解说参数为弧度值。函数名cos调用语法retval = cos (value);解说参数为弧度值。函数名atan2调用语法retval = atan2 (value1, value2);解说运算并返回value1除以value2结果的arctan值,单位为弧度,范围在-PIPI。应用例:角度转化成弧度子程序。sub de

30、grees_to_radians local ($degrees) = _; local ($radians);11: $radians = atan2(1,1) * $degrees / 45;函数名sqrt调用语法retval = sqrt (value);解说平方根函数。value为非负数。函数名exp调用语法retval = exp (value);解说返回e的value次方。函数名log调用语法retval = log (value);解说以e为底的自然对数。函数名abs调用语法retval = abs (value);解说绝对值函数。(Perl 4中没有)函数名rand调用语法re

31、tval = rand (num);解说随机数函数,返回0和整数num之间的一个浮点数。函数名srand调用语法srand (value);解说初始化随机数生成器。保证每次调用rand真正随机。三、字符串处理函数函数名index调用语法position = index (string, substring, position);解说返回子串substring在字符串string中的位置,如果不存在则返回-1。参数position是可选项,表示匹配之前跳过的字符数,或者说从该位置开始匹配。函数名rindex调用语法position = rindex (string, substring, pos

32、ition);解说与index类似,区别是从右端匹配。函数名length调用语法num = length (string);解说返回字符串长度,或者说含有字符的数目。函数名pos调用语法offset = pos(string);解说返回最后一次模式匹配的位置。函数名substr调用语法substr (expr, skipchars, length)解说抽取字符串(或表达式生成的字符串)expr中的子串,跳过skipchars个字符,或者说从位置skipchars开始抽取子串(第一个字符位置为0),子串长度为length,此参数可忽略,意味着取剩下的全部字符。当此函数出现在等式左边时,expr必

33、须为变量或数组元素,此时其中部分子串被等式右边的值替换。函数名study调用语法study (scalar);解说用一种内部格式提高变量的访问速度,同一时刻只对一个变量起作用。函数名lcuc调用语法retval = lc(string);retval = uc(string);解说将字符串全部转换成小/大写字母。函数名lcfirstucfirst调用语法retval = lcfirst(string);retval = ucfirst(string);解说将第一个字母转换成小/大写。函数名quotameta调用语法newstring = quotemeta(oldstring);解说将非单词的

34、字母前面加上反斜线()。语句 : $string = quotemeta($string);等效于:$string = s/(W)/$1/g;常用于模式匹配操作中,确保字符串中没有字符被看作匹配操作符。函数名join调用语法join (joinstr, list);解说把字符串列表(数组)组合成一个长的字符串,在每两个列表元素间插入串joinstr。函数名sprintf调用语法sprintf (string, fields);解说与printf类似,区别是结果不输出到文件,而作为返回值赋给变量。例子$num = 26;$outstr = sprintf(%d = %x hexadecimal

35、or %o octaln,$num, $num, $num);print ($outstr);结果输出26 = 1a hexadecimal or 32 octal四、标量转换函数函数名chop调用语法$lastchar = chop (var);解说var可为变量或数组,当var为变量时,最后一个字符被删除并赋给$lastchar,当var为数组/列表时,所有元素的最后一个字符被删除,最后一个元素的最后一个字母赋给$lastchar。函数名chomp调用语法result = chomp(var);解说检查字符串或字符串列表中元素的最后一个字符是否为由系统变量$/定义的行分隔符,如果是就删除。

36、返回值为实际删除的字符个数。函数名crypt调用语法result = crypt (original, salt);解说用DES算法加密字符串,original是将要加密的字符串,salt是两个字符的字符串,定义如何改变DES算法,以使更难解码。返回值为加密后的串。函数名hex调用语法decnum = hex (hexnum);解说将十六进制数(字符串形式)转化为十进制数。函数名int调用语法intnum = int (floatnum);解说将浮点数舍去小数部分转化为整型数。函数名oct调用语法decnum = oct (octnum);解说将八进制数(字符串形式)或十六进制数(0 x.形式

37、)转化为十进制数。函数名ord调用语法asciival = ord (char);解说返回单个字符的ASCII值,与PASCAL中同名函数类似。函数名chr调用语法$char = chr (asciival);解说返回ASCII值的相应字符,与PASCAL中同名函数类似。函数名pack调用语法formatstr = pack(packformat, list);解说把一个列表或数组以在实际机器存贮格式或C等编程语言使用的格式转化(包装)到一个简单变量中。参数packformat包含一个或多个格式字符,列表中每个元素对应一个,各格式字符间可用空格或tab隔开,因为pack忽略空格。除了格式a、A

38、和外,重复使用一种格式多次可在其后加个整数,如: $twoints = pack (i2, 103, 241);把同一格式应用于所有的元素则加个*号,如: $manyints = pack (i*, 14, 26, 11, 83);对于a和A而言,其后的整数表示要创建的字符串长度,重复方法如下: $strings = pack (a6 x 2, test1, test2);格式的情况比较特殊,其后必须加个整数,该数表示字符串必须的长度,如果长度不够,则用空字符(null)补足,如: $output = pack (a 6 a, test, test2);pack函数最常见的用途是创建可与C程序

39、交互的数据,例如C语言中字符串均以空字符(null)结尾,创建这样的数据可以这样做: $Cstring = pack (ax, $mystring);下表是一些格式字符与C中数据类型的等价关系:字符 等价C数据类型CcharddoubleffloatiintIunsigned int (or unsigned)llongLunsigned longsshortSunsigned short完整的格式字符见下表。 格式字符 描述a用空字符(null)补足的字符串A用空格补足的字符串b位串,低位在前B位串,高位在前c带符号字符(通常-128127)C无符号字符(通常8位)d双精度浮点数f单精度浮点

40、数h十六进制数串,低位在前H十六进制数串,高位在前i带符号整数I无符号整数l带符号长整数L无符号长整数n网络序短整数N网络序长整数p字符串指针s带符号短整数S无符号短整数u转化成uuencode格式vVAX序短整数VVAX序长整数x一个空字节X回退一个字节以空字节(null)填充函数名unpack调用语法list = unpack (packformat, formatstr);解说unpack与pack功能相反,将以机器格式存贮的值转化成Perl中值的列表。其格式字符与pack基本相同(即上表),不同的有:A格式将机器格式字符串转化为Perl字符串并去掉尾部所有空格或空字符;x为跳过一个字节

41、;为跳过一些字节到指定的位置,如4为跳过4个字节。下面看一个和X合同的例子: $longrightint = unpack (* X4 L, $packstring);此语句将最后四个字节看作无符号长整数进行转化。下面看一个对uuencode文件解码的例子:1 : #!/usr/local/bin/perl2 : 3 : open (CODEDFILE, /u/janedoe/codefile) |4 : die (Cant open input file);5 : open (OUTFILE, outfile) |6 : die (Cant open output file);7 : whi

42、le ($line = ) 8 : $decoded = unpack(u, $line);9 : print OUTFILE ($decoded);10: 11: close (OUTFILE);12: close (CODEDFILE); 当将pack和unpack用于uuencode时,要记住,虽然它们与UNIX中的uuencode、uudecode工具算法相同,但并不提供首行和末行,如果想用uudecode对由pack的输出创建的文件进行解码,必须也把首行和末行输出(详见UNIX中uuencode帮助)。函数名vec调用语法retval = vec (vector, index, bi

43、ts);解说顾名思义,vec即矢量(vector)函数,它把简单变量vector的值看作多块(维)数据,每块含一定数目的位,合起来即一个矢量数据。每次的调用访问其中一块数据,可以读取,也可以写入。参数index就象数组下标一样,提出访问哪一块,0为第一块,依次类推,要注意的是访问次序是从右到左的,即第一块在最右边。参数bits指定每块中的位数,可以为1,2,4,8,16或32。例子1 : #!/usr/local/bin/perl2 : 3 : $vector = pack (B*, 11010011);4 : $val1 = vec ($vector, 0, 4);5 : $val2 = v

44、ec ($vector, 1, 4);6 : print (high-to-low order values: $val1 and $val2n);7 : $vector = pack (b*, 11010011);8 : $val1 = vec ($vector, 0, 4);9 : $val2 = vec ($vector, 1, 4);10: print (low-to-high order values: $val1 and $val2n); 结果high-to-low order values: 3 and 13low-to-high order values: 11 and 12函

45、数名defined调用语法retval = defined (expr);解说判断一个变量、数组或数组的一个元素是否已经被赋值。expr为变量名、数组名或一个数组元素。如果已定义,返回真,否则返回假。函数名undef调用语法retval = undef (expr);解说取消变量、数组或数组元素甚至子程序的定义,回收其空间。返回值始终为未定义值,此值与空串等效。五、数组和列表函数函数名grep调用语法foundlist = grep (pattern, searchlist);解说与同名的UNIX查找工具类似,grep函数在列表中抽取与指定模式匹配的元素,参数pattern为欲查找的模式,返回

46、值是匹配元素的列表。例子list = (This, is, a, test);foundlist = grep(/tT/, list);结果foundlist = (This, test);函数名splice调用语法retval = splice (array, slipelements, length, newlist);解说拼接函数可以向列表(数组)中间插入元素、删除子列表或替换子列表。参数skipelements是拼接前跳过的元素数目,length是被替换的元素数,newlist是将要拼接进来的列表。当newlist的长度大于length时,后面的元素自动后移,反之则向前缩进。因此,当length=0时,就相当于向列表中插入元素,而形如语句splice (array, -1, 0, Hello);则向数组末尾添加元素。而当newlist为空时就相当于删除子列表,这时,如果length为空,就从第skipelements个元素后全部删除,而删除最后一个元素则为:splice (array, -1);这种情况下,返回值为被删去的元素列表。函数名shift调用语法element = shift (arrayvar);解说删去数组第一个元素,剩下元素前移,返回被删去的元素。不加参数时,缺省地对ARGV进行操作。函数名unshift调用语法cou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论