eda技术与verilog hdl》
- 格式:pdf
- 大小:1.51 MB
- 文档页数:56
EDA技术与Verilog HDL实验报告学生姓名:樊奇峰学生学号:20102533所在班级:10级电科(2)班实验老师:陈亮亮实验地点地点:理工楼实验一 EDA实验箱使用一.实验目的1.GW48教学实验系统原理与使用介绍2.熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。
二.实验内容首先了解GW48系统使用注意事项以及GW48系统主板结构与使用方法,接着对各实验电路结构图特点与适用范围简述。
最后在QuartusII界面下,用文本输入和图形输入分别验证七选一多路选择器的功能。
三.程序清单文本输入如下所示:module mux71(a,b,c,d,e,f,g,s,y);input a,b,c,d,e,f,g;output y;input [2:0] s;reg y ;always @(a,b,c,d,e,f,g,s)case (s)0: y<=a;1: y<=b;2: y<=c;3: y<=d;4: y<=e;5: y<=f;6: y<=g;default: y<=a;endcaseendmodule图形输入如下所示:四、实验步骤1、新建一个名称为MUX71a的工程,并在该文件夹中新建一个MUX71a.v的文件。
2、编译代码,编译成功后进行第三步,若不成功则查改代码中的错误。
3、在工程文件夹中新建一个MUX71a.vwf的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。
4、验证输出端口波形是否达到七选一多路选择器的功能。
五、实验数据仿真波形如下图所示。
六、实验小结通过对EDA实验箱使用,了解了GW48教学实验系统原理与使用介绍;熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。
实验二用原理图和VerilogHDL语言设计一位全加器一.实验目的熟悉在QuartusII下用原理图和VerilogHDL语言设计一位全加器。
6-1 在Verilog设计中,给时序电路清零(复位)有两种不同方法,它们是什么,如何实现?答:同步清零、异步清零,在过程语句敏感信号表中的逻辑表述posedge CLK用于指明正向跳变,或negedge用于指明负向跳变实现6-2 哪一种复位方法必须将复位信号放在敏感信号表中?给出这两种电路的Verilog 描述。
答:异步复位必须将复位信号放在敏感信号表中。
同步清零:always @(posedge CLK) //CLK上升沿启动Q<=D; //当CLK有升沿时D被锁入Q异步清零:always @(posedge CLK or negedge RST) begin //块开始if(!RST)Q<=0; //如果RST=0条件成立,Q被清0else if(EN) Q<=D;//在CLK上升沿处,EN=1,则执行赋值语句end//块结束6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的数量。
module Statistics8(sum,A); output[3:0]sum;input[7:0] A;reg[3:0] sum;integer i;always @(A)beginsum=0;for(i=0;i<=8;i=i+1) //for 语句if(A[i]) sum=sum+1;else sum=sum;endendmodule module Statistics8(sum,A); parameter S=4;output[3:0]sum;input[7:0] A;reg[3:0] sum;reg[2*S:1]TA;integer i;always @(A)beginTA=A; sum=0;repeat(2*S)beginif(TA[1])sum=sum+1;TA=TA>>1;endendendmodulerepeat循环语句for循环语句module Statistics8(sum,A);parameter S=8;output[3:0]sum;input[7:0] A;reg[S:1] AT;reg[3:0] sum;reg[S:0] CT;always @(A) beginAT={{S{1'b0}},A}; sum=0; CT=S;while(CT>0) beginif(AT[1])sum=sum+1;else sum=sum;begin CT= CT-1; AT=AT>>1; end end endendmodule6-3 用不同循环语句分别设计一个逻辑电路模块,用以统计一8位二进制数中含1的数量。
EDA技术与VerilogHDL课程设计EDA(Electronic Design Automation)技术是现代电子产品设计中不可或缺的环节。
EDA技术可以大大提高电路设计的效率和质量,加速产品的开发周期。
近年来,EDA技术得到了快速发展,成为电子工程师必须掌握的技能之一。
在EDA技术的学习中,VerilogHDL是不可或缺的一部分。
VerilogHDL简介VerilogHDL是一种硬件描述语言,可以用于设计数字电路和系统。
它可以描述数字电路的结构、行为和时序,可以用于描述数字电路中的元件、模块和系统。
VerilogHDL可以用于设计各种各样的数字电路,如计算机系统、芯片、通信系统等。
它是目前广泛使用的一种HD(Hardware Description)语言。
VerilogHDL提供了一种简单、清晰的方式来描述数字电路的功能和行为。
它可以将数字电路分解成各种不同的部分,使用模块化的方法进行设计。
同时,VerilogHDL也提供了强大的模拟和验证工具,可以在设计和开发过程中进行仿真和调试。
因此,VerilogHDL已经成为数字电路设计中不可或缺的一部分。
EDA技术与数字电路设计EDA技术主要包括从原理图到物理图的设计流程、电路仿真和验证、逻辑综合、布局布线等技术。
这些技术可以大大提高电路设计的效率和质量。
在EDA技术中,数字电路设计是其中一个重要的环节。
数字电路设计可以分为三个步骤:设计、仿真和验证。
设计包括电路结构设计和源代码的编写。
仿真是为了验证设计的正确性和可靠性。
验证是为了确保电路设计满足规格,并能够在现实环境中稳定运行。
EDA技术在数字电路设计中的运用非常广泛。
它可以大大简化设计过程,提高设计的效率和质量。
在EDA技术中,VerilogHDL是不可或缺的一部分。
它可以用来描述数字电路的结构、功能和时序。
同时,VerilogHDL也提供了强大的仿真和验证工具,可以帮助设计者进行电路仿真和验证,提高电路设计的质量和可靠性。
EDA技术与Verilog HDL课程论文简单的时钟设计学院:信息科学与工程学院班级:xx班姓名:xxx学号:xx教师:xx一.设计要求概述1.设计要求1)具有时、分、秒计数显示功能,以24小时循环计时。
2)具有清零,调节小时、分钟功能(加入了整点报时,闪光灯的特效)。
2.设计目的1)数字钟学习的目的是掌握多位计数器相连的设计方法;2)掌握十进制、六进制、二十四进制计数器的设计方法;3)巩固多位共阴极扫描显示数码管的驱动及编码;4)掌握CPLD、FPGA技术的层次化设计方法二.基于Verilog HDL语言的电路设计、仿真与综合本程序采用结构化设计方法,将其分为彼此独立又有一定联系的三个模块(一)顶层模块,如图1所示:(二)子模块1.分频器脉冲发生电路将实验箱48MHz的频率分频成1Hz(供系统时钟),2Hz(快速校分、校时)以及1KHz和500KHz(供闹钟电路)。
例如1000分频源程序如下:module fenpin(input CP, output CPout);reg CPout;reg [31:0] Cout;reg CP_En;always @(posedge CP ) //将50MHz分频为1kHzbeginCout <= (Cout == 32'd50000) ? 32'd0 : (Cout + 32'd1);CP_En <= (Cout == 32'd50000) ? 1'd1 : 1'd0;CPout <= CP_En;endendmodule功能仿真波形如图2所示2.控制器和计数器控制器的作用是,调整小时和分钟的值,并能实现清零功能。
计数器的作用是实现分钟和秒钟满60进1,小时则由23跳到00。
当到达59分55秒的时候,LED灯会闪烁来进行报时。
因为控制器和计数器的驱动信号频率均为1Hz,故从分频器输出的信号进入控制器后,要进行二次分频,由1Khz变为1Hz。
EDA技术与Verilog HDL技术实验报告班级:09电信实验班姓名:虞鸿鸣组别:Q09610137实验:交通灯控制一、实验目的:1、运用Verilog HDL综合编辑软件实现相应功能;2、进一步使用EDA技术解决实际问题;3、进一步使用EDA工具箱,提高对硬件电路的认识。
二、实验仪器PC计算机、EDA实验工具箱三、简要原理1. 能显示十字路口东西、南北两个方向的红、黄、绿的指示状态用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯。
变化规律为:东西绿灯,南北红灯→东西黄灯,南北红灯→东西红灯,南北绿灯→东西红灯,南北黄灯→东西绿灯,南北红灯……依次循环。
2. 能实现正常的倒计时功能用两组数码管作为东西和南北方向的允许或通行时间的倒计时显示,显示时间为红灯45秒、绿灯40秒、黄灯5秒。
3. 能实现紧急状态处理的功能(1) 出现紧急状态(例如消防车,警车执行特殊任务时要优先通行)时,两路上所有车禁止通行,红灯全亮;(2) 显示到计时的两组数码管闪烁;(3) 计数器停止计数并保持在原来的状态;(4) 特殊状态解除后能返回原来状态继续运行。
4. 能实现系统复位功能系统复位后,东西绿灯,南北红灯,东西计时器显示40秒,南北显示45秒。
5. 用VHDL语言设计符合上述功能要求的交通灯控制器,并用层次化设计方法设计该电路。
6. 控制器、置数器的功能用功能仿真的方法验证,可通过有关波形确认电路设计是否正确。
7. 完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。
四、设计思路EN、CLK、RST、URGEN分别为使能信号、时钟信号、复位信号和紧急情况信号;num1,num2分别为东西方向的倒计时和南北方向的倒计时,两个八位数码管,硬件接有译码芯片;light1,light2分别为东西方向的交通灯和南北方向的交通灯中红、黄、绿三色位置;tim1,tim2分别为东西和南北方向的交通的灯控制信号,高电平时有效;pb1,pb2分别为寄存紧急情况前交通灯状态变量的标志信号,高电平有效;state1,state2分别为东西、南北方向的交通灯状态信号,每个方向有三种状态,即00、01、11;五、源代码及注析module TRAFFIC_LI(EN,CLK,RST,URGEN,num1,num2,light1,light2);input EN,CLK,RST,URGEN;//EN、CLK、RST、URGEN分别为使能信号、时钟信号、复位信号和紧急情况信号output[7:0] num1,num2;//num1,num2分别为东西方向的倒计时和南北方向的倒计时,两个八位数码管,硬件接有译码芯片output[2:0] light1,light2;//light1,light2分别为东西方向的交通灯和南北方向的交通灯中红、黄、绿三色位置reg tim1,tim2,pb1,pb2;//tim1,tim2分别为东西和南北方向的交通的灯控制信号,高电平时有效//pb1,pb2分别为寄存紧急情况前交通灯状态变量的标志信号,高电平有效reg[1:0]state1,state2;//state1,state2分别为东西、南北方向的交通灯状态信号,每个方向有三种状态,即00、01、11reg[2:0]light1,light2,light3,light4;//light3,light4用以寄存紧急情况前交通灯状态reg[7:0] num1,num2;//现实时间寄存reg[7:0] red1,red2,green1,green2,yellow1,yellow2;//东西南北方向三种颜色的交通灯亮的时间always @(EN)if(!EN)begin //设置计数初值green1<=8'b01000000;//绿灯40Sred1<=8'b01000000;//红灯40Syellow1<=8'b00000101;//黄灯5Sgreen2<=8'b01000000;red2<=8'b01000000;yellow2<=8'b00000101;endalways @(posedge CLK )beginif(!URGEN)beginlight3<=light1;endif(RST)//东西方向复位控制beginlight1<=3'b001; //亮绿灯num1<=green1;//时间为40Sendelse if(URGEN) //东西方向紧急情况控制beginlight1<=3'b100; //亮红灯//计数暂停pb1<=1;endelse if(pb1)beginlight1<=light3;pb1<=0;endelse if(EN)begin //使能有效开始控制计数if(!tim1) //开始控制begin //东西方向交通灯点亮控制tim1<=1;case(state1)2'b00:beginnum1<=green1;light1<=3'b001;state1<=2'b01;end//绿灯亮40S,跳转至下一状态2'b01:beginnum1<=yellow1-1;light1<=3'b010;state1<=2'b10;end//黄灯亮5秒,跳转至下一状态2'b10:beginnum1<=red1+5;light1<=3'b100;state1<=2'b00;end//红灯亮45S,跳转至初状态default:light1<=3'b100;//其他情况亮红灯endcaseendelsebegin //倒数计时if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]-1;endelse num1[3:0]<=num1[3:0]-1;if(num1==1) tim1<=0;endendelsebeginlight1<=3'b010;num1=2'b00;tim1<=0;endendalways @(posedge CLK )beginif(!URGEN)beginlight4<=light2;endif(RST) //南北方向复位控制beginlight2<=3'b100;//亮红灯num2<=red2+5;//时间为45Sendelse if(URGEN)//南北方向特殊情况控制beginlight2<=3'b100;//亮红灯//计数暂停pb2<=1;endelse if(pb2)beginlight2<=light4;pb2<=0;endelse if(EN)beginif(!tim2)begin //南北方向交通灯控制tim2<=1;case(state2)2'b00:beginnum2<=red2+5;light2<=3'b100;state2<=2'b01;end2'b01:beginnum2<=green2;light2<=3'b001;state2<=2'b10;end2'b10:beginnum2<=yellow2-1;light2<=3'b010;state2<=2'b00;enddefault:light2<=3'b100;endcaseendelsebegin //倒数计时if(num2>0)if(num2[3:0]==0)beginnum2[3:0]<=4'b1001;num2[7:4]<=num2[7:4]-1;endelse num2[3:0]<=num2[3:0]-1;if(num2==1) tim2<=0;endendelsebegintim2<=0;state2<=2'b00;light2<=3'b010;endendendmodule六、实验结果及分析初始状态时,东西方向绿灯,计时40秒,南北方向红灯,计时45秒。