《交通灯eda设计》word版.doc_第1页
《交通灯eda设计》word版.doc_第2页
《交通灯eda设计》word版.doc_第3页
《交通灯eda设计》word版.doc_第4页
《交通灯eda设计》word版.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

华中科技大学文华学院毕业设计(论文)第一章.选题背景1.1 EDA设计的发展状况:本设计是建立在EDA基础上完成的项目。EDA技术经历了CAD阶段,CAE阶段,EDA阶段三个发展阶段。在今天,EDA技术已经成为电子设计的普遍工具,无论设计芯片还是设计系统,没有EDA工具的支持,都是难以完成的。如今的EDA区别于曾经的:构成系统的“积木块”是各种标准芯片。EDA技术的出现改变了这种传统思路,使人们可以立足于PLD芯片来实现各种不同的功能,新的设计方法能够由设计者自己定义器件的内部逻辑和管脚,将原来由电路版设计完成的工作大部分放在芯片的设计中进行。1.2 国内外交通灯的发展状况:本人所设计的交通灯设计早已经不仅仅禁锢于当初的红黄绿三色灯上了,在各大交通紧张的十字路口还可能设有左转灯,四盏灯按合理顺序亮灭。同样也可以运用Verilog语言进行编译完成此设计。而目前,国内外专家和学者普遍采用模糊控制方法来设计交通灯实时控制系统实践表明,采用这种方法设计的控制系统可进一步提高路网的通行能力,减少路口延误时间和停车次数,对高度非线性的、随机的十字路口车流量的控制更加精确,并取得了更高的经济效益。 本系统的控制原理框图可由图1表示,它主要由传感器、模糊控制器(包括计算控制变量、模糊量处理、模糊控制规则、模糊推理和清晰化处理五个模块,如图中虚线内所示)、执行机构、被控对象以及数模和模数转换器组成。 图1-1控制原理框图本系统以单向上有三个车道的道路为实验模型,共使用了24个传感器设计的交通灯模糊控制系统比传统的交通灯控制系统平均节约7.8秒的等待时间。而本人所要设计的交通灯控制器仅仅需要红绿两种颜色,控制两个干道的车辆,并且有5秒的闪烁时间以便提示车辆或者行人做好禁止通行准备.而此种设计已经可以用各种语言不同方式实现.我所使用的是较为简单的Verilog HDL语言编译程序,最终通过MAX+PLUS2这个全英文工具加以实现. 第二章.方案论证 2.1 设计要求设计一个十字路口交通信号灯的控制电路。要求红、绿灯按一定的规律亮和灭,并在亮灯期间进行倒计时,并将运行时间用数码管显示出来。 绿灯亮时,为该车道允许通行信号,红灯亮时,为该车道禁止通行信号。要求主干道每次通行时间为99秒,支干道每次通行时间为30秒。每次变换运行车道前绿灯闪烁,持续时间为5秒。即车道要由X转换为Y时,X在通行时间只剩下5秒钟时,绿灯闪烁显示,Y仍为红灯,以便X上已过停车线的车继续通行,未过停车线的车停止通行。同理,当车道由Y转换为X时,Y绿灯闪烁显示5秒钟,X仍为红灯。可以对X,Y车道上红、绿灯运行的时间进行重新设置。对器件进行在系统编程和实验验证。2.2 方案设计分析设计要求,交通灯的控制要保证在同一个时刻,只有一条干道是通行状态。并且任一条干道的绿灯在运行时间只剩5秒的时候开始闪烁,而另一条干道的红灯继续亮,反之亦然。设A方向是主干道,车流量大,B方向支干道。A方向和B方向的红,黄,绿分别用R1,Y1,G1和R2,Y2,G2来表示。(1)绿黄红黄绿由于本设计老师没有安排黄灯亮,仅可代表绿灯闪烁5秒的时间。(2)在置数模块中,设四个并行的ALWAYS同时对四个置数键键控。置数值分别放在chief_h,chief_l,sub_h,sub_l.(3)每种灯亮的时间采用一个减法计数器进行记数,计数器用同步预置法设计,这样只需改变预置数据,就能改变计数器的模,因此每个方向只要一个记数器进行记时即可。(4)为便于显示灯亮的时间,计数器的输出可采用BCD码,显示由四个数码管来完成,A方向和B方向各用两个数码管。这样设计中就需要四条输出线,用来选通指定一个LED七段显示数码管;当正常计时开始后,需要进行定时技数操作,由于东西和南北两个方向上的时间显示器是由两个LED七段数码管组成的,因此需要产生两个2位的计时信息:2个十位信号,2个个位信号,这个定时计数操作可以由一个定时计数起来完成,又因为交通灯的状态变化是在计时为0的情况下才能进行的,因此需要一个计时电路来产生使能信号,因此定时计数的功能就是用来产生2个2位计时信息和使能信号。(5)采用自上而下的设计方法,将其分为各个小模块,然后连接最后达到最后的设计目的.交通灯状态图如下: S0主干道绿灯亮,支干道红灯亮S1主干道绿灯闪(5S),支干道红灯亮/select;flash主干道红灯亮,支干道绿灯闪(5S)主干道红灯亮,支干道绿灯亮Select;/flashSelect;flash/select;/flash 图2-1交通灯状态图第三章设计论述: 本设计的完成是运用Verilog HDL语言进行编译,用MAX+PLUS2软件来实现的。对此我对Verilog HDL语言与MAX+PLUS2进行简单描述。最后再详细介绍本设计的全部内容。3.1.Verilog HDL语言:1. Verilog HDL语言的发展过程:Verilog HDL语言是在1983年由GDA(Gate Way Design Automation)公司的Phil Moorby首创的:在1984-1985年间,Moorby设计出第一个关于Verilog-XL的仿真器;1986年,又提出了用于快速门级仿真的XL算法。 随着Verilog-XL算法的成功,Verilog HDL语言得到迅速发展,1989年,CADENCE公司收购GDA公司,Verilog HDL成为CADENCE公司的私有财产。1990年CANDENCE公司决定公开发表Verilog HDL,于是成立了OVI(Open Verilog international)组织来负责 Verilog HDL的发展。基于Verilog HDL的优势,IEEE于1995年制定了Verilog HDL的IEEE标准。2. Verilog HDL的特点:1. Verilog语言是一种通用的硬件描述语言,并且易学易用,在语法上和C 语言类似。2. 同一个设计中,Verilog语言允许设计者在不同层次上进行抽象。Verilog语言提供开关级,门级。RTL级和行为级的支持,一个设计可以先用行为级语法描述它的算法,仿真通过后,再用RTL级描述,得到可综合的代码。3. Verilog语言支持广泛,基本上所有流行的综合器,仿真器都支持此语言。4. 能够描述层次设计,可使用模块实例结构描述任何层次,模块的规模可以是任意的,语言对此没有任何限制。5. Verilog语言对仿真提供强度的支持。Verilog HDL语言中,描述进程的基本语句是always和initial.always过程反复执行其中的块语句,而initial过程中的语句块只执行一次.除了always和initial过程块外,一个assign赋值语句,一个实例元件的调用都可以看做是一个进程. 在VerilogHDL语言中已预定义了门级原型: and n-input AND gate nand n-input NAND gate or n-input OR gate nor n-input NOR gate xor n-input exclusive OR gate xnor n-input exclusive NOR gate buf n-output buffer not n-output inverter bufif0 tri-state buffer; Io enable bufif1 tri-state buffer; hi enable notif0 tri-state inverter; Io enable notif1 tri-state inverter; hi enable 表3-1Verilog HDL行为描述方法:过程块的组成: 过程语句(事件控制敏感表) begin (:块名) 块内局部变量说明 一条或多条过程赋值或高级程序语句 end在always下面使用的高级程序语句:(1)if-else 条件语句 if (条件表达式) 块语句1 else if (条件表达式2) 块语句2 . else if (条件表达式n) 块语句n else 块语句n+1(2)case 语句case (敏感表达式) 值1:块语句1 值2:块语句2 值n: 块语句n default:块语句n+1endcase (3)for循环语句 for (表达式1;表达式2;表达式3)块语句3.2 MAX+PLUS2的介绍: 本设计很关键的一步就是对MAX+PLUS2的学习,因为后面所涉及到的文本编译,建立模块,仿真都需要对此软件的熟练掌握才能很好的达到最终目的,因此我粗略的把使用MAX+PLUS2的基本流程描述一下。 我完成此设计是采用文本编译,然后建立模块最后实现仿真的。使用MAX+plus II 软件进行开发的流程如图3所示,主要包括以下步骤: 图3-1 而MAX+PLUS2可以采用两种方法来完成:1.文本设计法。2.图形输入法。而我采用的第一种方法。 采用Verilog HDL进行文本设计的步骤如下: 1指定项目并建立新文件; 2输入文本设计文件; 3文件命名、保存; 4编译文件并检查、修改句法错误; 5若需要,可生成默认逻辑符号。以下我简单介绍下自己运用时的步骤:1 编译: MAX+plus II 的编译器能够接受多种输入文本格式,也能输出多种文件格式。如前所述,它能接受的设计文件包括:MAX+plus II 自己的图形文件(.gdf)、AHDL文件(.tdf)、VHDL文件(.vhd)和Verilog HDL文件(.v);包括第三方EDA工具书输入文件,如EDIF文件(.edf)、库映射文件(.lmf)、OrCAD文件(.sch)及Xilinx文件(.xnf); 它还能接受赋值和配置文件(.acf)。另一方面,MAX+plus II 的输出文件包括设计校验、MAX+plus II 的模拟器网表文件(.snf)、第三方EDA工具所用的网表文件(.vo)和标准格式的SDF文件(.sdo)。另外还可以输出可编程文件,包括用于E2PROM类器件编程的目标文件(.pof)、用于配置SRAM类器件的目标文件(.sof)和JEDEC文件(.jed)。正常运行MAX+PLUS2后,先建立一个文件夹如123。然后点FILE中的NEW出现如下图,选择TEXT EDITOR变会出现输入文本的空白界面,便可以输入你编的程序,完成编译后进行保存。然后点project建立工程并且使名字也和程序名一致。然后点MAX+PLUS2中的compiler进行程序验证,如有错误便可按照提示查出错误进行改正,直到正确无误为止。图3-2 2. 波形仿真:再点击FILE选择NEW出现上面同样的界面,这回选择wave editor file然后保存。然后打开后出现图点击右键选择你要观察的引脚,将输入INPUT键入初始值。点击MAX+PLUS2选择simulator进行仿真,点击start检验无误后便可以仿真了。 图3-3图3-43. 建立模块完成以上内容后点FILE中的create default symbol,然后点NEW选择第一个GRAPLIC EDITOR FILE然后在空白中输入SYMBOL就会出现你要的模块。这样整个过程就算初步完成,此后还有模块的整合在后面会叙述到。此处就不再累赘。MAX + PLUS II 能够将设计的结果用层次显示方式显示出树的形式显示出整个项目和电路的设计层次。打开层次显示窗口的方法是在MAX + PLUS II菜单中选择Hierarchy Display项,选择后,当前项目的层次便显示出来。图3.8是上例中模块mul4_look的结构层次,层次中的每个文件都可以通过双击文件名打开,并送到前台显示来。它以一个层次: 图3-53.3.基于交通灯控制的设计论述: 本设计遵循着自上而下的方法来完成的,先建立各个小的模块最后再进行整合。我们将整个分成设置模块,计时模块,显示模块与最终的顶层模块。我完成计时控制模块和顶层模块。简要介绍下置数模块和显示模块。在置数模块中,ALWAYS语句中用置数键的上升沿跳变做触发。每按次置数案键,便产生电平变化,对应的置数键加1。当置数位加到9后下一次归0。四个并行的ALWAYS同时对四个置数键监控。置数值分别放在chief_h,chief_l,sub_h,sub_l显示模块中完成交通灯的显示和闪烁功能。我们完成的交通灯的逻辑功能如下:通过外部:chief_l_botton;chief_h_button;sub_l_button;sub_h_button,分别对主干道和次干道的通行时间进行设置。在按下enable键后,交通灯开始运行。运行时间以设置的值为初始值,以秒为单位进行减计数并且在数码管上显示。并且保持交通灯的控制在同一时刻,只有一条干道是通行状态。并且任何一条干道的绿灯在运行时间只剩下5秒钟的时间开始闪烁,而另一条干道的红灯继续亮。反之亦然。控制及译码表格:输入信号输出信号selectflashChief_greenChief_redSub_greenSub_red 0 0 1 0 0 1 0 1 闪烁 0 0 1 1 0 0 1 1 0 1 1 0 1闪烁 0 表3-2所有的功能按键设置为脉冲模式chief_h_button( 主干道通行时间置数高位键),chief_l_button (主干道通行时间置数低位键),sub_h_button( 次干道通行时间置数高位键),sub_l_button(次干道通行时间置数低位键)。每次置数从0开始,每按一次键加1,到9归零,依次循环(置数范围为099)。整体电路图如下: 图3-6其中输入端(INPUT)包括Enable控制计时器的运行和关闭.CLK为时钟脉冲.chief_h_button,chief_l_button,sub_h_button,sub_l_button则为四个控制两个干道的置数键.输出端(OUTPUT)chief_green,chief_red,sub_green,sub_red接发光管.其中闪烁的效果用flash&clk实现的.既然采用的是自顶向下的设计思想,那么顶层的设计就很重用,顶层设计好后,下面各个部分写起来就比较容易了,一旦出了什么问题也好检查错误在哪里进行相应的改动。3.3.1 设计过程: 完成真个交通灯的设计主要经过了电路的分析,模块划分,程序的编译,模块的建立,波形的仿真,和最后模块的整合这几个步骤: 在设计中我主要负责计时模块和顶层模块的建立,所以本文只对此进行详细叙述,对另两个模块就不做详解。(Enable键控制计时器的运行和关闭。Enable按下后,将置数值赋给计数变量chief_h_temp,chief_l_temp,sub_h_temp,sub_l_temp.)根据设计要求先将整个电路的输入输出规划出来。其中输入:一个运行控制键enable(按下后可以使交通灯运行,再按下后交通灯停止运行。)一个时钟信号CLK,四个功能按键分别控制主干道高低位键,支干道高低位键。(chief_h_button,chief_l_button,sub_h_button,sub_l_button)。输出:chief_green,chief_red,sub_green,sub_red(分别控制发光管)。并且设置输出chief_h,chief_l,sub_h,sub_l可以控制数码管显示。初步对电路分析后建立了一个系统的框架。如图9所式:而模块的划分是设计中要求的所以不必再做叙述。、yesyes绿灯闪烁红灯保持绿灯闪烁红灯保持yes调节信号使能nonoyesyesnoyes计时到Ty是否绿灯5S内东西为绿,南北为红计时到TX是否绿灯5S内东西为红,南北为绿,计时开始复位通电nonono图3-7系统框图3.3.2 计时模块(1)程序的编译我主要负责的是计时控制模块的编译,首先我们确定的是用文本输入的方法来实现。在程序中完成了计时功能同时也完成了控制的功能:初始状态,计数选择寄存器select=0,对主干道的计数变量进行减计数。每到一个时钟上升沿,对变量减。建立一个文件夹并再在其中建立个名为jishi的文件夹,与程序同名,为以后整合时调用模块做依据。然后点击file中的new选择texteditorfile。根据以上的要求编译计时程序如下Modulejishi(start,Initial,clk,chief_h,chief_l,sub_h,sub_l,enable,select,flash,chief_h_temp,chief_l_temp,sub_h_temp,sub_l_temp)input start,enable;input clk;input chief_h,chief_l;input sub_h,sub_l ;input Initial;output select,flash;output chief_l_temp, chief_h_temp;output sub_l_temp,sub_h_temp;always (posedge enable)begin start=start;endalways (posedge clk)beginif(start)beginif(!Initial)begin chief_l_temp=chief_l; chief_h_temp=chief_h; sub_l_temp=sub_l; sub_h_temp=sub_h; Initial=1) begin chief_h_temp=chief_h_temp-1; chief_l_temp=1)&(chief_l_temp=9) begin if(chief_h_temp=0)&(chief_l_temp=5) begin flash=1;chief_l_temp=chief_l_temp-1; end else chief_l_temp=chief_l_temp-1; end else if(chief_h_temp=0)&(chief_l_temp=0)begin select=1;flash=1) begin sub_h_temp=sub_h_temp-1; sub_l_temp=1)&(sub_l_temp=9) begin if(sub_h_temp=0)&(sub_l_temp=5) begin flash=1;sub_l_temp=sub_l_temp-1;end else sub_l_temp=sub_l_temp-1; end else if(sub_h_temp=0)&(sub_l_temp=0) begin select=0;flash=0; chief_l_temp=chief_l; chief_h_temp=chief_h; sub_l_temp=sub_l; sub_h_temp=sub_h; end end end end else begin chief_l_temp=0; chief_h_temp=0; sub_l_temp=0; sub_h_temp=0; endendendmodule说明:当k1键按下,Enable为高点平时,定时器开始运行,否则定时器关闭。clk上升沿触发,如果start为1,则将置数值赋给计数变量chief_h_temp,chief_l_temp,sub_h_temp,sub_l_temp;如果start为0,则chief_h_temp,chief_l_temp,sub_h_temp,sub_l_temp都将赋0值。Select为计数干道选择寄存器,其初始值为0,对主干道的计数变量进行减计数。每到来一个时钟上升沿,对变量减1。其中有3种特殊情况:(以主干道为例)1 chief_l_temp为0,chief_h_temp大于1时,chief_l_temp减1,chief_h_temp赋9。2 chief_l_temp大于1,小于9时,当chief_l_temp为5,chief_h_temp为0时,flash赋1,低位继续减,否则chief_l_temp减1。3 chief_l_temp为0,chief_h_temp等于0时,select赋1,flash赋0当计数选择寄存器select=1,对支干道的计数变量进行减计数。每到来一个时钟上升沿,对变量减1。同样也要分三种情况讨论。(2)建立计时控制模块 将上述程序保存到先设定的文件夹jishi中,然后点file进入project选择set project current file。再对程序进行检查,选择MAX+PLUS2点compiler就可以检测了。若有错误会出现提示,可以根据提示找到错误的行数进行纠错。直至正确为止。然后再次进入FILE点create Defaule symbol生成模块。然后建立一个新的.gdf文件,在空白处点右键选择enter symbol便可以出现所设计出的模块,计时模块图如下: 图3-8计时控制模块具体操作过程在前面的中介绍过了在此不在多说。3.3.3 顶层模块:(1)程序顶层模块的建立是建在同组同学的模块与自己的子模块全部通过检测后完全通过的基础上的。看到以下的部分程序代码为顶层模块的输入输出口:定义的输入,输出的管脚;module trafficlamp(enable,clk,chief_h_button,chief_l_button, sub_h_button,sub_l_button,counter_play, chief_green,chief_red,sub_green,sub_red, chief_h,chief_l,sub_h,sub_l); input clk; input enable; input chief_h_button; input chief_l_button; input sub_h_button; input sub_l_button; output7:0counter_play; output chief_green,chief_red,sub_green,sub_red; output3:0 chief_h,chief_l,sub_h,sub_l; reg flash; reg select; reg start; reg Initial; reg3:0 chief_ltemp,chief_htemp; reg3:0 sub_ltemp,sub_htemp; reg3:0 chief_h,chief_l,sub_h,sub_l;(2)建立顶层模块将同组人员的设置模块,显示模块和本人的计时控制模块进行连接校对整合,从单个模块可以看出(图显示,设置模块图请看附录),各个模块间有相同的端口部分,将同名端口进行连线即可,将鼠标停留在路基函数脚位尾端,鼠标光标会变成“+”的形状,在此处按住鼠标并拖曳,可进行连接。检测方法:可选取连线的逻辑函数符号并拖曳,若线会跟着移动则代表连接成功。同时注意线的粗细,若要更改连接线的类型,可在窗口菜单中选择Options Line Style,选择接线类型。当连接线传送多种信号时必须选用总线(实粗线),当连接线仅传送一种信号时最好使用缺省类型实细线。(顶层模块图如图11)图3-9顶层模块 第四章结果分析仿真中要学会如何去分析模块是否满足设计要求,详细的仿真解释在结果分析中详细做了叙述,根据输入不同的初试值可以得到不同的答案。4.1 计时控制模块 在设计论述中只介绍了设计的思路和过程,但关键还要会通过软件来分析自己的设计正误与否后者是否能够达到事先预计的效果。因此在仿真中最能看出设计的效果。来看以下的几个仿真图即可一目了然。 程序编译成功后,建立.scf文件在界面中键入输入,输出口再按照设计要求在输入口输入初试值。点MAX+PLUS2中的simulator出现对话框点击start开始检测,无误后点击open SCF即开始仿真,以下为仿真结果:(1)支干道开始计时: 图4-1 可以分析得到当主干道为绿灯时支干道为红灯,并当支干道sub_red依然为高电平即亮红灯,到计时计到时。支干道sub_green跳为高电平,开始亮绿灯sub_red为0。而与此同时主干道绿灯的chief_green等于0,chief_red等于1即表示主干道开始亮红灯禁止车辆通行。(2)支干道结束,主干道开始,循环: 图4-2看到counter_play循环计时,主干道与支干道红绿灯交替发发光,其分析方法同上一样,根据几个输出端口的电平变化来判断。(3)主干道99S开始 图4-34.2 顶层模块仿真 把计时模块,置数模块,显示模块整合通过生成顶层模块后,采用同种方法进行检测与仿真。以下是按照设计要求对主干道设置99S,支干道设置30S实现的仿真结果。可以开到整个运行过程,主干道绿灯时候支干道亮红灯到94S时主干道绿灯开始闪烁,支干道依旧红灯。至99S时主干道亮红灯之干道换成绿灯并且同样到25S时支干道绿灯闪烁直至30S。这样依次循环。整个过程变顺利完成 图4-4顶层模块仿真第五章总 结完成了本次实验,我对EDA设计,Verilog HDL语言,MAX+PLUS2有了深刻的认识。概括如下:1. EDA(Electronic Design Automation)即电子设计自动化。它的运用范畴包括电子工程师进行产品开发的全过程,以及电子产品生产的全过程中期望由计算机提供的各种辅助工作。从一个角度看,EDA技术可粗略分为系统级,电路级和物理级实现级三个层次的辅助设计过程;从另一个角度看,EDA技术应包括电子电路设计的各个领域,即从低频电路到高频电路,从线性电路到非线性电路,从模拟电路到数字电路,从分立电路到集成电路的全部设计过程。2现代EDA技术的基本特征是采用高级语言描述,具有系统级防真和综合能力。我在交通灯的设计过程中就采用了自上而下的设计方法。首先明确了系统的逻辑功能。而后分模块设计。最后将所有模块整合,从而实现整个系统的设计。“top-down”设计方法有利于在早期就发现结构设计中的错误,提高设计的一次成功率。2. 此次设计中我们所使用的语言是Verilog HDL语言,起初对其一无所知,后来在翻阅大量资料学习并运用后,对其有了一定了解。它可以在算法级,门级到开关级的多种抽象设计层次上对数字系统建模。Verlilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟,仿真语义。因此,用这种语言编写的模型能够使用Verlilog HDL仿真器进行验证。它从C语言中继承了多种操作符和结构,所以Verlilog HDL和C语言很相似。在设计中,我运用到了ALWAYS语句,在置数模块中四个并行ALWAYS同时对四个置数键监控。在编程中首先要对定义一些引脚或者变量,然后定义输入,输出口。在进入程序主体。在编程中要注意大小写和各种符合,我在编译的过程中就遇到的多次错误都是因为符号的疏忽导致的。机器语言是严谨的。3.我们运用到的软件是MAX+PLUS2,此软件是个全英文软件属于ATLERA公司,曾经也运用过类似的软件QUARTUS 2。这两个软件的基本运用流程都非常相似。都可以分为“原理图编译”先画出模块图从而生成程序。与“文本编译”通过程序生成模块来完成设计两种方法。我采用的是先用编程,再建立模块从而仿真的过程。我们运用的MAX+PLUS2是需要LIENCE的版本,所以首先我键入了此码后,之后才能完全运用此软件。在运用中遇到的问题是仿真时不知道如何调整输入口的初始值,后来摸索很久后才将各种工具运用自如。在实验中也难免会出现各种各样的错误,在错误与改正的过程中才进一步对设计有了更加深刻的了解,以下便是我在实验中出现过的错误和更正方法。(1) 编译错误:在编译过程中容易最基本的就是打印错误,1和小写的L就经常混淆。其他一些错误多由粗心造成,所以以下几个方面要多加注意同时也是Verilog HDL语言的几个基本特征:1大小写敏感。2所有关键字小写。3空格只为了增加程序的可读性。4分号用语表明一条语句的结束。 侦错,在电路编辑完成之后,选取窗口菜单FILE,进入PROJIECT选择SAVE&check,即可针对电路设计文件进行检查,检查完成后会出现错误数目信息对话框,常见的错误方式有:少分号或括号,扩展名格式部队,“IF”结构少了“END IF”,使用脚位没有声明,引用函数脚位名称错误,没有声明函数形式而直接使用。再者程序编译多次无法实现是因为对硬件的不了解。其实完成这个设计最基本的思想就是“硬件意识”。也就是说,在写代码的时候,大脑里首先想好完成的具体功能应该是什么样的物理电路去实现,然后再用Verilog HDL语言将该电路描述出来,而不能凭空的去写代码,只有存在的电路才是可物理实现的。在设计中我们心中应该先有了电路,然后再用一种计算机能够识别的方式进行描述。(2)建模错误: 1.未曾使工程的名字与文本文件名相同,这样就无法建立出你所需要的文件,因为计算机就无法调出你相应的程序进行建模。应该在你保存文件时候就使指定的项目名称和文件名相同。本步骤有两种方法可以实现,一种是选择窗口菜单FILE进入Project然后选择Set Project to current File,即设定项目名称与文件相同;另一种是选择窗口菜单FILE进入Project然后选择点NAME,出现对话框,输入与电路文件名相同的项目名称(去掉扩展名),再点击OK按扭即可。2.在建立多个子模块时将多个程序段存放到一个文件夹中,这样很容易混淆并且为调用模块带来了很多麻烦,所以在编译程序时就要建好文件夹将文件有条理的存放在该文件夹中,如我在设计中计时程序就放在取名为计时的文件夹中,相应的显示,置数都放在各自文件夹中。进而再建立模块保存到其中,以便以后调用。3.将各个子模块建立后就是顶层模块的建立,这就存在各个模块的连接问题。虽然仅仅是些输入输出的连接问题但其中也有不少小的问题。如信号输入端和输出端的连接上,要将鼠标光标停留在路基函数脚位尾端,鼠标变成“+”的形状,在此处才可按住鼠标拖拽,可进行连接,其他一些过程在设计过程中提到此处就不累赘。 (3)仿真错误:本人在仿真中犯的错误比较少。因为有作过类似软件的经验,所以仿真时较为顺利。仅仅在给输入端输入初试值时没注意一个输入端为高电平而导致错误。经过修改后仿真一次成功。总之,通过本次设计学习到了设计方面的东西,首先要清晰的了解设计的整个流程与方法,把整个系统的框架要明了于心。然后再按照步骤一步步完成。在对待一个新的软件时候不要盲目的去试用,应该把相关的书籍看得透彻后再运用一些小的例子来试用,对软件熟悉后最后来完成设计。这样才便于一个设计的完整实现。 结 束 语本设计是基于Verilog语言的交通灯控制器的几个模块:显示模块,

温馨提示

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

评论

0/150

提交评论