当前位置:文档之家› verilog抢答器(最经典)

verilog抢答器(最经典)

verilog抢答器(最经典)
verilog抢答器(最经典)

抢答器设计

题目:智能电子抢答器专业:电子信息工程

2011 年 1 月7 日

摘要

抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。电子抢答器的中心构造一般都是由抢答器由单片机以及外围电路组成。

本设计是以四路抢答为基本概念。从实际应用出发,利用电子设计自动化( EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。它以Verilog HDL 硬件描述语言作为平台,结合动手实验而完成的。它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。本抢答器的电路主要有四部分组成:鉴别锁存电路、FPGA主芯片EP1C3T144C8电路、计分电路以及扫描显示模块的电路,并利用Quartus II工具软件完成了Verilog HDL源程序编写和硬件下载。这个抢答器设计基本上满足了实际比赛应用中的各种需要。在实际中有很大的用途。

关键词:抢答器 Quartus II Verilog HDL EP1C3T144C8

1引言

硬件描述语言 Hardware Description Language 是硬件设计人员和电子设计自动化 EDA 工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对用 Verilog HDL 或 VHDL 建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表 Netlist,根据型仿真验证无误后用于制造ASIC芯片或写入 EPLD 和 FPGA 器件中。

Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得Verilog HDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI 组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995.

Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。

2 关于课程设计

2.1 课程设计目的

理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个智力抢答器的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用Verilog HDL语言去控制将会使我们对本专业知识可以更好地掌握。

2.2 课程设计的内容

加1分,错一次减1分。

3 开发工具简介

3.1 EDA技术

EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。

3.2 硬件描述语言—Verilog HDL

Verilog HDL 是硬件描述语言的一种,用于数字电子系统设计。该语言是 1983 年由 GDA ( GateWay Design Automation )公司的 Phil Moorby 首创的。 Phil Moorby 后来成为 Verilog - XL 的主要设计者和 Cadence 公司( Cadence Design System )的第一个合伙人。在 1984-1985 年间, Phil Moorby 设计出第一个名为 Verilog-XL 的仿真器; 1986 年,他对 Verilog HDL 的发展又一次作出了巨大贡献——提出了用于快速门级仿真的 XL 算法。

随着 Verilog-XL 算法的成功, Verilog HD 语言得到迅速发展。 1989 年,Cadence 公司收购 GDA 公司, Verilog HDL 语言成为了 Cadence 公司的私有财产。 1990 年, Cadence 公司决定公开 Verilog HDL 语言,并成立了 OVI ( Open Verilog International )组织,并负责促进 Verilog HDL 语言的发展。基于 Verilog HDL 的优越性, IEEE 于 1995 年制定了 Verilog HDL 的

IEEE 标准,即 Verilog HDL1364-1995 ; 2001 年发布了 Verilog HDL1364-2001 标准。

3.3 Verilog HDL 的设计流程一般是:

1 .文本编辑:用任何文本编辑器都可以进行,也可以用专用的 HDL 编辑环境。通常 Verilog HDL 文件保存为 .v 文件。

2 .功能仿真:将文件调入 HDL 仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只有在布线完成之后,才进行时序仿真)。

3 .逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。逻辑综合软件会生成 .edf ( EDIF )的 EDA 工业标准文件。(最好不用 MAX+PLUS II 进行综合,因为只支持 VHDL/Verilog HDL 的子集)

4 .布局布线:将 .edf 文件调入 PLD 厂家提供的软件中进行布线,即把设计好的逻辑安放到 CPLD/FPGA 内。

5 .时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序(也叫后仿真)。

3.4 FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:

1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。--2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

3)FPGA内部有丰富的触发器和I/O引脚。

4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

目前FPGA的品种很多,有XILINX公司的Virtex系列、TI公司的TPC系列、ALTERA公司的Stratix系列等。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA 进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA 的使用非常灵活。

FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。

4 设计过程

4.1 系统设计要求

本设计的具体要求是:

(1) 设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮。

(2) 电路具有第一抢答信号的鉴别和锁存功能。在主持人按下复位按钮后,若参加者按抢答开关,则该组指示灯亮。此时,电路应具备自锁功能,使别组的抢答开关不起作用。

(3)自锁后,用八段数码管显示抢答者的序号,同时扬声器发出“嘟嘟”并且持续3秒。

(4) 设置计分电路。每组在开始时预置成6,抢答后由主持人计分,答对一次加1,否则减1分。

4.2 系统设计方案

根据系统设计要求可知,系统的输入信号有:各组的抢答按钮1、2、3、4,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口LEDA、LEDB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。本系统应具有的功能有:第一抢答信号的鉴别和锁存功能;数码管显示;计分控制。

根据以上的分析,我们可将整个系统分为四个主要模块:抢答鉴别模

块;抢答计分模块;显示译码模块;EP1C3T144C8 接口模块。

抢答原理图

显示蜂鸣原理图

计分显示模块(由于板大小限制,只显示两组)pcb

EP1C3T144C8 接口原理图

系统的工作原理如下:当主持人按下使能端EN时,抢答器开始工作,1、2、3、4四位抢答者谁最先抢答成功则此选手的台号灯(LED1~LED4)将点亮,并且主持人前的组别显示数码管讲显示出抢答成功者的台号;接下来主持人提问,若回答正确,主持人按加分按钮,抢答积分模块将给对应的组加分,并将组的总分显示在对应的选手计分数码管上。在此过程中。完成第一轮抢答后,主持人清零,接着重新开始,步骤如上。

4.3 主要VHDL源程序

module

YangLu(clk,inputEn,inputL1,inputL2,inputL3,inputL4,Sig1,Sig2,Sig3,Sig4,Led,Buzz er);

// 一开始时声明有哪些端口

//输入口

input clk,inputEn,inputL1,inputL2,inputL3,inputL4; //输出口

output Sig1,Sig2,Sig3,Sig4;

output [0:7]Led;

output Buzzer;

//在输出口配置个寄存器,以便运算

reg Sig1=1'b1,Sig2=1'b1,Sig3=1'b1,Sig4=1'b1;

reg [0:7]Led;

reg Buzzer;

//配置寄存器,EnFlat是表明开始抢答的标志位reg EnFlat=1'b0;

//BuClk是蜂鸣器的标志位

reg BuClk=1'b0;

//BuL是做蜂鸣器的延时用

reg [0:7]BuL=8'd0;

always @ (posedge clk)//捕捉时钟

begin

//初始化各按键并开始抢答

if(inputEn==1'b0)

begin

//初始化各个标志位和参数

EnFlat=1'b1;

//各个按键对应的LED控制端

Sig1=1'b1;

Sig2=1'b1;

Sig3=1'b1;

Sig4=1'b1;

//静态数码管的控制端,有8位

Led=8'b11111111;

BuClk=1'b0;

//蜂鸣器的控制管脚,低电平为发声音

Buzzer=1'b1;

end

//开始抢答

if(EnFlat==1'b1)

begin

//如果按键1按下

if(inputL1==1'b0)

begin

//禁止其他选手抢答

EnFlat=1'b0;

//对应的LED点亮

Sig1=1'b0;

//静态数码管显示序号'1'

Led=8'b01101111;

//指示蜂鸣器发声

BuClk=1'b1;

end //如果按键2按下

else if(inputL2==1'b0)

begin

//禁止其他选手抢答

EnFlat=1'b0;

Sig2=1'b0;

Led=8'b00011010;

BuClk=1'b1;

end //如果按键3按下

else if(inputL3==1'b0)

begin

//禁止其他选手抢答

EnFlat=1'b0;

Sig3=1'b0;

Led=8'b01001010;

BuClk=1'b1;

end //如果按键4按下

else if(inputL4==1'b0)

begin

//禁止其他选手抢答

EnFlat=1'b0;

Sig4=1'b0;

Led=8'b01101001;

BuClk=1'b1;

end

end

//当蜂鸣器标志位置1时

//进入此蜂鸣器处理程序

if(BuClk==1'b1)

begin

//蜂鸣器发声

Buzzer=1'b0;

//延时变量加1

BuL = BuL + 8'd1;

//当到达延时的时间时关掉蜂鸣器

if(BuL==8'd255)

begin

//延时变量复位

BuL=8'd0;

//蜂鸣器标志位复位

BuClk=1'b0;

//蜂鸣器停掉

Buzzer=1'b1;

end

end

end

endmodule

5

静态调试

静态调试是在不加电压即电路不工作的情况下进行的测试。参照所画的PCB图,主要检查电路板是否完好。该导通是否已导通,无短路现象,检查元器件是否使用正确,检查焊点是否有虚焊。检查无误后,方可加电使其工作。

6 总结

本次实训为期两周,分组选题。由于种种原因,我们两个人选择了3个人一组的题目。确定下题目后,首先就是方案的确定。经过老师的辅导、同学的帮助、翻阅相关资料,综合各方面的考虑,最后确定用FPGA来实现电子抢答器的功能。FPGA首先要有最主要的芯片,感谢童有为老师提供的EP1C3T144C8芯片和接口电路模块,这是本次实训的基础。但是要了解EP1C3T144C8芯片的构造,需要查看大量的英文资料,我并没有气馁,一个管脚一个管脚的对比,终于弄清楚了实现功能的大体思路。然后就是学习Verilog HDL语言,虽然以前学过,但是时间比较久了,差不多都忘了,用了几天时间熟悉了Verilog HDL 源程序的编写。最后是硬件的调试,这是个漫长的过程,EP1C3T144C8芯片的接口也非常的繁杂,最后我坚持了下来。

通过这次实训,我对Verilog HDL有了深入的认识。同时也对EDA产生了更加浓厚的兴趣。本次实训,也检验了自己的能力,加强了逻辑思维的能力,不过我也发现了自身存在的一些问题,比如在protel软件的应用上还有很多不成熟不理解的地方,但是相信在以后的学习生活中我可以很好的与予改正,取得更好的成绩,也希望日后老师能不厌其烦的指导我,给予我更大的支持。

谢辞

本论文设计在各位老师的悉心指导和严格要求下业已完成,从选题到具体的实训和写作过程,无不凝聚着老师们的心血和汗水。在我实训期间,老师为我提供了种种专业知识上的指导和一些富于创造性的建议,老师们严谨求实的态度使我深受感动,没有这样的帮助和关怀和熏陶,我不会这么顺利的完成实训任务。在此向老师们表示深深的感谢和崇高的敬意!

这次实训还要感谢黄钟鸣同学的热情帮助,是他让我在短时间内熟悉了Verilog HDL源程序的编写。在硬件调试阶段,也有很多同学给予了帮助,在此谢谢你们了。

我还要借此机会向给予我诸多教诲和帮助的各位老师表示由衷的谢意,感谢他们的辛勤栽培。不积跬步何以至千里,各位任课老师认真负责,在他们的悉心帮助和支持下,我能够很好的掌握和运用专业知识,并在实训中得以体现,顺利完成实训任务。

同时,在论文写作过程中,我还参考了有关的书籍和论文,在这里一并向有关的作者表示谢意。

我还要感谢同组的各位同学以及我的各位室友,在这段时间里,你们给了我很多的启发,提出了很多宝贵的意见,对于你们帮助和支持,在此我表示深深地感谢!

参考文献

1 谭会生,张昌凡. EDA技术及应用.第二版.西安电子科技大学出版社,2009

2 李大社,基于Quartus II的FPGA/CPLD设计实例精解,电子工业出版社,2010

3 李国洪,胡辉,沈明山. EDA技术与实验.机械工业出版社,2009

4 西勒提(MichaelD.Ciletti), Verilog HDL高级数字设计,电子工业出版社,2010

5 刘建清. 从零开始学CPLD和Verilog.HDL编程技术,国防工业出版社,2007

6 巴斯克,夏宇闻,甘伟译. VERILOG HDL入门,北京航空航天大学,2010

7 王港元等,电子技能基础(第二版),四川大学出版社, 2001

附录

module YangLu(clk,inputEn,inputL1,inputL2,inputL3,inputL4,Sig1,Sig2,Sig3,Sig4,Led,Buzzer); input clk,inputEn,inputL1,inputL2,inputL3,inputL4;

output Sig1,Sig2,Sig3,Sig4;

output [0:7]Led;

output Buzzer;

reg Sig1=1'b1,Sig2=1'b1,Sig3=1'b1,Sig4=1'b1;

reg [0:7]Led;

reg Buzzer;

reg EnFlat=1'b0;

reg BuClk=1'b0;

reg [0:7]BuL=8'd0;

always @ (posedge clk)//捕捉时钟

begin

if(inputEn==1'b0)

begin

EnFlat=1'b1;

Sig1=1'b1;

Sig2=1'b1;

Sig3=1'b1;

Sig4=1'b1;

Led=8'b11111111;

BuClk=1'b0;

Buzzer=1'b1;

end

if(EnFlat==1'b1)

begin

if(inputL1==1'b0)

begin

EnFlat=1'b0;

Sig1=1'b0;

Led=8'b01101111;

BuClk=1'b1;

end

else if(inputL2==1'b0)

begin

EnFlat=1'b0;

Sig2=1'b0;

Led=8'b00011010;

BuClk=1'b1;

end

else if(inputL3==1'b0)

begin

EnFlat=1'b0;

Sig3=1'b0;

Led=8'b01001010;

BuClk=1'b1;

end

else if(inputL4==1'b0)

begin

EnFlat=1'b0;

Sig4=1'b0;

Led=8'b01101001;

BuClk=1'b1;

end

end

if(BuClk==1'b1)

begin

Buzzer=1'b0;

BuL = BuL + 8'd1;

if(BuL==8'd255)

begin

BuL=8'd0;

BuClk=1'b0;

Buzzer=1'b1;

end

end

end

endmodule

抢答器(-Verilog-HDL实现)

抢答器(-Verilog-HDL实现)

桂林电子科技大学信息科技学院《EDA技术与应用》实训报告 学号0952100110 姓名赵万里 指导教师:江国强杨艺敏 2011年04月20日

实训题目:智能电子抢答器 1.系统设计 1.1 设计要求 1.1.1 设计任务 设计并制作一台智能电子抢答器。 1.1.2 技术要求 ①用EDA实训仪的I/O设备和PLD芯片实现智能电子抢答器的设计。 ②智能电子抢答器可容纳4组参赛者抢答,每组设一个抢答钮。 ③电路具有第一抢答信号的鉴别和锁存功能。在主持人将复位按钮按下后开始抢答,并用EDA实训仪上的八段数码管显示抢答者的序号,同时扬声器发出“嘟嘟”的响声,并维持3秒钟,此时电路自锁,不再接受其他选手的抢答信号。 ④设计一个计分电路,每组在开始时设置为100分,抢答后由主持人计分,答对一次加10分,答错一次减10分。 ⑤设计一个犯规电路,对提前抢答和超时抢答者鸣喇叭示警,并显示犯规的组别序号。 1.2 方案比较 (1) 设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮。 (2) 电路具有第一抢答信号的鉴别和锁存功能。在主持人按下复位按钮后,若参加者按抢答开关,则该组指示灯亮。此时,电路应具备自锁功能,使别组的抢答开关不起作用。

(3)自锁后,用八段数码管显示抢答者的序号,同时指示灯亮。(4) 设置计分电路。每组在开始时预置成100,抢答后由主持人计分,答对一次加10,否则减10分。 (5)电路具有淘汰功能,当每组的100分减少到0时,该组被淘汰,以后每次抢答,该组抢答按钮都无效。 1.3 方案论证 1.3.1 总体思路 总体分为四部分:倒计时模块、计分模块、抢答模块和分屏显示模块。 倒计时模块用一个20000000分频。产生一个进位,连接一个30的减法计数器构成。 计分模块中分为两部分,一部分用于计分,另一部分用于处理计数器的进制问题,当加到A时自动向前进位,并且把A变为0。当减少到F时,向前借位,并且把F变为9。这就实现了把十六进制变成一般用的十进制。 抢答模块分两部分,复位模块和抢答模块,每次抢答都要初始化按键。抢答模块又分为误抢,无人抢答和正确抢答。每次抢答,当有一组按下抢答,立即锁定,亮相应的分数和组号,并且亮起各种抢答所对应的灯信号。(即所要求的蜂鸣器) 分屏显示模块中用每次抢答的组号作为输入,当抢答后立即换屏显示其组号分数。 1.3.2 设计方案 (1)根据设计要求需要一个时钟的接入端clk,清除端clrn,使倒

verilog-HDL抢答器(两个程序)

一、设计任务 智力竞赛抢答器Verilog HDL要求有6位参赛者进行抢答,有六个抢答信号进行抢答。当有抢答选手按下抢答键后系统能够快速准确的判断是那一组选手按下了抢答信号,由于系统比较小,速度比较快一般不会有同时按下的可能,所以只有六种状态,然后系统能够根据这六种状态进行适时的显示和提示。当有选手按下以后就对抢答信号进行锁存,其他选手的输入无效。然后就是对抢答进行时间限制了,根据设定的时间进行倒计时,当倒计时完成还没有人抢答的时候系统发出警报声音提示时间已经到了。当有选手在主持人未按下抢答键抢答时视为超前抢答,系统显示该选手号,同时蜂鸣器响,该抢答无效。还有清除复位键,抢答完成以后按复位键即可清除已有的状态。通过Verilog HDL程序代码实现系统的各个功能。 二、设计目的与要求 目的:理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问题的独立工作能力,培养学生正确的设计思想,严肃认真、实事求是的科学态度和勇于探索的创新精神。通过对一个智力抢答器的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤,通过Verilog 程序的编写,进一步熟悉Verilog HDL 的语法知识;规范化训练学生撰写技术研究报告,提高书面表达能力。 要求: 掌握FPGA设计系统的一般方法。 熟练掌握使用modelsim软件设计较复杂的数字逻辑电路。 培养学生独立分析问题和解决实际问题的能力。 三、课程设计的内容 设计一抢答器,要求如下: (1)抢答台数为6; (2)具有抢答开始后20s倒计时,20秒倒计时后6人抢答显示超时,并报警; (3)能显示超前抢答台号并显示犯规报警; (4)系统复位后进入抢答状态,当有一路抢答按键按下,该路抢答信号将其余 各路抢答信号封锁,同时铃声响起,直至该路按键松开,显示牌显示该路抢答台号。 四、系统设计方案 根据系统设计要求可知,系统的输入信号有:主持人按钮inputEn,各选手的抢答按钮分别是inputL1、inputL2、inputL3、inputL4,inputL5,inputL6,主

原创:VHDL verilog 互相调用的例子

给两个例子, 一个是VHDL做顶层调用verilog 一个是verilog 做顶层调用VHDL VHDL调用verilog: module sync_block #( parameter INITIALISE = 2'b00 ) ( input clk, // clock to be sync'ed to input data_in, // Data to be 'synced' output data_out // synced data ); //VHD entity dcm_reset is port( ref_reset : in std_logic; -- Synchronous reset in ref_clk domain ref_clk : in std_logic; -- Reliable reference clock of known frequency (125MHz) dcm_locked : in std_logic; -- The DCM locked signal dcm_reset : out std_logic -- The reset signal which should be connected to the DCM ); end dcm_reset; component sync_block port ( clk : in std_logic; -- clock to be sync'ed to data_in : in std_logic; -- Data to be 'synced' data_out : out std_logic -- synced data ); end component; dcm_locked_sync_tx : sync_block port map( clk => ref_clk, data_in => dcm_locked, data_out => dcm_locked_sync ); verilog调用VHDL:(目标还是上述VHDL模块) module gmii_if ( …… ); dcm_reset rx_dcm_reset ( .ref_reset (tx_reset), .ref_clk (tx_clk),

verilog--4路抢答器设计-带30s倒计时

四路抢答器 一、程序 module qiangda4(clr,clk,input1,input2,input3,input4,seg,clockin,scan,LED); input clr,clk,input1,input2,input3,input4; output [7:0] seg; //7段数码管数据 output [7:0] scan; //数码管位选 output [3:0] LED; //输出LED灯指示 output clockin; //蜂鸣器 reg [7:0] seg; reg [7:0] scan; reg [3:0] LED; reg clockin; reg [3:0] data; reg input_flag,count_flag; reg [14:0] count1; reg [8:0] count2; reg [3:0] LED_N; //reg clock_flag; reg div1khz,div1hz; reg [2:0] cnt; reg [3:0] dat; //reg [7:0] data_count; reg [3:0] count_one,count_ten; initial count_one='d0; //初始化 initial count_ten='d3; initial data=4'b0000; initial LED_N=4'b1111; //-------------fenping分频1khz----------------------------------- always @(posedge clk ) begin if(count1=='d25000) begin div1khz<=~div1khz;count1<=0;end else begin count1<=count1+1'b1;end end //-------------fenping--1hz-------------------------------

抢答器VerilogHDL实现

抢答器(-Verilog-HDL实现)

————————————————————————————————作者:————————————————————————————————日期:

桂林电子科技大学信息科技学院《EDA技术与应用》实训报告 学号0952100110 姓名赵万里 指导教师:江国强杨艺敏 2011年04月20日

实训题目:智能电子抢答器 1.系统设计 1.1 设计要求 1.1.1设计任务 设计并制作一台智能电子抢答器。 1.1.2 技术要求 ①用EDA实训仪的I/O设备和PLD芯片实现智能电子抢答器的设计。 ②智能电子抢答器可容纳4组参赛者抢答,每组设一个抢答钮。 ③电路具有第一抢答信号的鉴别和锁存功能。在主持人将复位按钮按下后开始抢答,并用EDA实训仪上的八段数码管显示抢答者的序号,同时扬声器发出“嘟嘟”的响声,并维持3秒钟,此时电路自锁,不再接受其他选手的抢答信号。 ④设计一个计分电路,每组在开始时设置为100分,抢答后由主持人计分,答对一次加10分,答错一次减10分。 ⑤设计一个犯规电路,对提前抢答和超时抢答者鸣喇叭示警,并显示犯规的组别序号。 1.2方案比较 (1)设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮。 (2)电路具有第一抢答信号的鉴别和锁存功能。在主持人按下复位按钮后,若参加者按抢答开关,则该组指示灯亮。此时,电路应具

备自锁功能,使别组的抢答开关不起作用。 (3)自锁后,用八段数码管显示抢答者的序号,同时指示灯亮。(4)设置计分电路。每组在开始时预置成100,抢答后由主持人计分,答对一次加10,否则减10分。 (5)电路具有淘汰功能,当每组的100分减少到0时,该组被淘汰,以后每次抢答,该组抢答按钮都无效。 1.3 方案论证 1.3.1 总体思路 总体分为四部分:倒计时模块、计分模块、抢答模块和分屏显示模块。 倒计时模块用一个20000000分频。产生一个进位,连接一个30的减法计数器构成。 计分模块中分为两部分,一部分用于计分,另一部分用于处理计数器的进制问题,当加到A时自动向前进位,并且把A变为0。当减少到F时,向前借位,并且把F变为9。这就实现了把十六进制变成一般用的十进制。 抢答模块分两部分,复位模块和抢答模块,每次抢答都要初始化按键。抢答模块又分为误抢,无人抢答和正确抢答。每次抢答,当有一组按下抢答,立即锁定,亮相应的分数和组号,并且亮起各种抢答所对应的灯信号。(即所要求的蜂鸣器) 分屏显示模块中用每次抢答的组号作为输入,当抢答后立即换屏显示其组号分数。 1.3.2 设计方案

VerilogHDL实例

本文档含有很多Verilog HDL例子://与门 module zxhand2(c,a,b); input a,b; output c; assign c= a & b; endmodule //或门 module zxhor2(c,a,b); input a,b; output c; assign c= a | b; endmodule //非门 module zxhnot2(c,b); input b; output c; assign c=~ b; endmodule ////异或门 module zxhxro2(c,a,b); input b; output c; assign c=a ^ b; endmodule 两选一电路 module data_scan(d0,d1,sel,q); output q; input d0,d1,sel; wire t1,t2,t3; n1 zxhand2(t1,d0,sel); n2 zxhnot2 (t4,sel); n3 zxhand2(t2,d1,t4); n4 zxhor2(t3,t1,t2);

assign q=t1; endmodule verilog HDL实例(一) 练习一.简单的组合逻辑设计 目的: 掌握基本组合逻辑电路的实现方法。 这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意 equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时, //equal输出为0。 endmodule 测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。 测试模块源代码: `timescale 1ns/1ns //定义时间单位。 module comparetest; reg a,b; wire equal; initial //initial常用于仿真时信号的给出。 begin a=0; b=0; #100 a=0; b=1; #100 a=1; b=1; #100 a=1; b=0; #100 $stop; //系统任务,暂停仿真以便观察仿真波形。 end compare compare1(.equal(equal),.a(a),.b(b)); //调用模块。 Endmodule

数字竞赛抢答器课程设计Verilog语言实现

数字竞赛抢答器课程设计Verilog语言实现

可编程器件与应用课程设计报告 姓名:XXX 学号:XXXXXXXXXX 专业班级:信息XXX 题目:数字式竞赛抢答器 指导老师:

一、绪论 背景: 随着电子技术的发展,可编程逻辑器件(PLD)的出现,使得电子系统的设计者利用EDA(电子设计自动化)软件,就可以独立设计自己的专用集成电路(ASIC)器件。可编程逻辑器件是一种半导体集成器件的半成品。在可编程逻辑器件的芯片中按一定方式(阵列形式或单元阵列形式)制作了大量的门、触发器等基本逻辑器件,对这些基本器件适当地连接,就可以完成某个电路或系统的功能。 数字式竞赛抢答器控制系统是工厂、学校和电视台等单位举办各种智力竞赛等娱乐活动中经常使用的重要基础设备之一。目前设计抢答器的方法很多,例如用传统的PCB板设计、用PIC 设计或者用单片机设计。而用Verilog可以更加快速、灵活地设计出符合各种要求的抢答器,优于其他设计方法,使设计过程达到高度自动化。本文介绍的4路数字式竞赛抢答器基于Verilog 语言、以EDA技术作为开发手段、采用CPLD (复杂的可编程逻辑器件)作为控制核心设计而成。与传统设计相比较,不仅简化了接口和控制,

也提高了系统的整体性能和工作可靠性,具有电路简单、成本低廉、操作方便、灵敏可靠等优点。意义: 数字式竞赛抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器存在分立元件使用较多,造成每路的成本偏高,而现代电子技术的发展要求电子电路朝数字化、集成化方向发展,因此设计出数字化全集成电路的多路抢答器是现代电子技术发展的要求。 二、实现方案 设计要求: 1、设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用。 2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。 3、设置一个主持人“复位”按钮。 4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别,扬声器发出2~3秒的音响。 5、设置一个计分电路,每组开始预置5分,由主持人记分,答对一次加1分,答错一次减1分。

verilog_FPGA实例

一、组合逻辑实验 (2) 实验13X8译码器程序 (2) 实验2二-十进制译码器 (2) 实验3BCD码—七段数码管显示译码器 (3) 实验48-3编码器 (4) 实验58-3优先编码器 (4) 实验6十—二进制编码器 (5) 实验7三选一数据选择器 (5) 实验8半加器 (6) 实验9全加器 (7) 实验10半减器 (8) 实验11全减器 (8) 实验12多位数值比较器 (9) 实验13奇偶校验 (9) 实验14补码生成 (10) 实验158位硬件加法器的设计 (10) 实验164位并行乘法器 (10) 实验17七人表决器 (10) 实验18格雷码变换 (11) 二、时序逻辑实验 (11) 实验1D触发器 (11) 实验2JK触发器 (12) 实验3四位移位寄存器 (12) 实验4异步计数器 (13) 实验5同步计数器 (14) 实验6可逆计数器 (15) 实验7步长可变的加减计数器 (16) 实验8含异步清0和同步时钟使能的4位加法计数器 (17) 实验9顺序脉冲发生器 (18) 实验10序列信号发生器 (18) 实验11用状态机实现串行数据检测器 (19) 实验12分频器 (20) 实验13Moore状态机 (21) 实验14Mealy状态机 (23) 实验15三层电梯 (24) 实验16性线反馈移位寄存器(LFSR)设计 (32) 实验17正负脉宽数控调制信号发生器 (32) 三、存储器设计 (34) 实验1只读存储器(ROM) (34) 实验2SRAM (34) 实验3FIFO (35) 四、扩展接口实验 (39) 实验1流水灯 (39) 实验2VGA彩色信号显示控制器设计 (40)

数字竞赛抢答器课程设计Verilog语言实现

可编程器件与应用课程设计报告 姓名: XXX 学号: XXXXXXXXXX 专业班级:信息XXX 题目数字式竞赛抢答器 指导老师:

、绪论 背景: 随着电子技术的发展,可编程逻辑器件(PLD )的出现,使得电子系统的设计者利用 EDA (电子设计自动化)软件,就可以独立设计自己的专用集成电路(ASIC )器件。可编 程逻辑器件是一种半导体集成器件的半成品。在可编程逻辑器件的芯片中按一定方式(阵列形式或单元阵列形式)制作了大量的门、触发器等基本逻辑器件,对这些基本器件适当地连接,就可以完成某个电路或系统的功能。 数字式竞赛抢答器控制系统是工厂、学校和电视台等单位举办各种智力竞赛等娱乐活动中经常使用的重要基础设备之一。目前设计抢答器的方法很多,例如用传统的PCB板设计、 用PIC设计或者用单片机设计。而用Verilog可以更加快速、灵活地设计出符合各种要求的 抢答器,优于其他设计方法,使设计过程达到高度自动化。本文介绍的4路数字式竞赛抢答 器基于Verilog语言、以EDA技术作为开发手段、采用CPLD (复杂的可编程逻辑器件)作为控制核心设计而成。与传统设计相比较,不仅简化了接口和控制,也提高了系统的整体性 能和工作可靠性,具有电路简单、成本低廉、操作方便、灵敏可靠等优点。意义:数字式竞赛抢答器作为一种电子产品,早已广泛应用于各种智力和知识竞赛场合,但目前所使用的抢答器存在分立元件使用较多,造成每路的成本偏高,而现代电子技术的发展要 求电子电路朝数字化、集成化方向发展,因此设计出数字化全集成电路的多路抢答器是现代 电子技术发展的要求。 实现方案 设计要求: 1设计一个可容纳4组参赛的数字式抢答器,每组设一个按钮,供抢答使用。 2、抢答器具有第一信号鉴别和锁存功能,使除第一抢答者外的按钮不起作用。 3、设置一个主持人“复位”按钮。 4、主持人复位后,开始抢答,第一信号鉴别锁存电路得到信号后,有指示灯显示抢答组别, 扬声器发出2~3秒的音响。 5、设置一个计分电路,每组开始预置5分,由主持人记分,答对一次加1分,答错一次减 1分。 6、设置犯规电路,对超时答题(例如1分钟)的组别鸣笛示警,并由组别显示电路显示出犯规组别,该轮该选手退出,由裁判员重新发令,其他人再抢答。 此设计问题可分为第一信号鉴别、锁存模块,答题计时电路模块,计分电路模块和扫描 显示模块四部分。 第一信号鉴别锁存模块的关键是准确判断出第一抢答者并将其锁存,在得到第一信号后,将输入端封锁,使其他组的抢答信号无效,可以用触发器或锁存器实现。设置抢答按钮 K1、K2、K3、K4,主持人复位信号judge,蜂鸣器驱动信号buzzout。judge=O时,第一信号鉴别、锁存电路、答题计时电路复位,在此状态下,若有抢答按钮按下,鸣笛示警并显示犯规组别;judge=1时,开始抢答,由第一信号鉴别锁存电路形成第一抢答信号,进行组别显示,控制蜂鸣器发出声响,并启动答题计时电路,若计时时间到,主持人复位信号还没有按下,则由蜂鸣器发出犯规示警声。 计分电路是一个相对独立的模块,采用十进制加/减计数器、数码管数码扫描显示,设 置复位信号Reset、加减分信号add_min,加减分状态键key_state, Reset=0时所有得分回到 起始分(5分),且加、减分信号无效;Reset=1时,由第一信号鉴别、锁存电路的输出信号 选择进行加减分的组别,当key_state=1时,按一次add_min,第一抢答组加1分;当key_state=O

Verilog的135个经典设计实例

【例3.1】4位全加器 module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule 【例3.2】4位计数器 module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1; //计数 end endmodule 【例3.3】4位全加器的仿真程序 `timescale 1ns/1ns `include "adder4.v" module adder_tp; //测试模块的名字 reg[3:0] a,b; //测试输入信号定义为reg型 reg cin; wire[3:0] sum; //测试输出信号定义为wire型 wire cout; integer i,j; adder4 adder(sum,cout,a,b,cin); //调用测试对象 always #5 cin=~cin; //设定cin的取值 initial begin a=0;b=0;cin=0; for(i=1;i<16;i=i+1) #10 a=i; //设定a的取值 end - 1 -

initial begin for(j=1;j<16;j=j+1) #10 b=j; //设定b的取值 end initial//定义结果显示格式 begin $monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum); #160 $finish; end endmodule 【例3.4】4位计数器的仿真程序 `timescale 1ns/1ns `include "count4.v" module coun4_tp; reg clk,reset; //测试输入信号定义为reg型 wire[3:0] out; //测试输出信号定义为wire型 parameter DELY=100; count4 mycount(out,reset,clk); //调用测试对象 always #(DELY/2) clk = ~clk; //产生时钟波形 initial begin//激励信号定义 clk =0; reset=0; #DELY reset=1; #DELY reset=0; #(DELY*20) $finish; end //定义结果显示格式 initial $monitor($time,,,"clk=%d reset=%d out=%d", clk, reset,out); endmodule 【例3.5】“与-或-非”门电路 module AOI(A,B,C,D,F); //模块名为AOI(端口列表A,B,C,D,F) input A,B,C,D; //模块的输入端口为A,B,C,D output F; //模块的输出端口为F - 2 -

verilog_hdl_fpga抢答器

FPGA期末结业论文基于FPGA&VerilogHDL的四路抢答器院系:物理与电子学院 专业:电子信息科学与技术 任课教师: 学号: 姓名: 2013年12月

目录 (0)摘要 (2) (1)引言 (3) 1.1关于课程设计 (3) 1.1.1课程设计目的 (3) 1.1.2课程设计内容 (3) 1.2开发工具简介 (4) 1.2.1 EDA技术 (4) 1.2.2 硬件描述语言-Verilog HDL (4) 1.2.3 Verilog HDL设计流程 (5) 1.2.4 FPGA基本特点 (5) 1.2.5 FPGA工作原理 (5) (2)概述 (5) 2.1 设计过程 (5) 2.1.1系统设计要求 (5) 2.1.2系统设计方案 (6) (3)系统设计 (6) 3.1系统组图 (6) 3.2系统主源程序 (8) (4)仿真综合 (10) (5)结论 (13) (6)参考文献 (13) (7)附录 (13)

0摘要 抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。电子抢答器的中心构造一般都是由抢答器由单片机以及外围电路组成。 本设计是以四路抢答为基本概念。从实际应用出发,利用电子设计自动化( EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。它以Verilog HDL硬件描述语言作为平台,结合动手实验而完成的。它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。本抢答器的电路主要有四部分组成:鉴别锁存电路、FPGA主芯片EP1C3T144C8电路、计分电路以及扫描显示模块的电路,并利用Quartus II工具软件完成了Verilog HDL源程序编写和硬件下载。这个抢答器设计基本上满足了实际比赛应用中的各种需要。在实际中有很大的用途。 关键词:抢答器 Quartus II Verilog HDL EP1C3T144C8

verilog抢答器(最经典)

抢答器设计 题目:智能电子抢答器专业:电子信息工程 2011 年 1 月7 日

摘要 抢答器是在竞赛、文体娱乐活动(抢答活动)中,能准确、公正、直观地判断出抢答者的机器。电子抢答器的中心构造一般都是由抢答器由单片机以及外围电路组成。 本设计是以四路抢答为基本概念。从实际应用出发,利用电子设计自动化( EDA)技术,用可编程逻辑器件设计具有扩充功能的抢答器。它以Verilog HDL 硬件描述语言作为平台,结合动手实验而完成的。它的特点是电路简单、制作方便、操作简单、方便、性能可靠,实用于多种智力竞赛活动。本抢答器的电路主要有四部分组成:鉴别锁存电路、FPGA主芯片EP1C3T144C8电路、计分电路以及扫描显示模块的电路,并利用Quartus II工具软件完成了Verilog HDL源程序编写和硬件下载。这个抢答器设计基本上满足了实际比赛应用中的各种需要。在实际中有很大的用途。 关键词:抢答器 Quartus II Verilog HDL EP1C3T144C8

1引言 硬件描述语言 Hardware Description Language 是硬件设计人员和电子设计自动化 EDA 工具之间的界面。其主要目的是用来编写设计文件,建立电子系统行为级的仿真模型。即利用计算机的巨大能力对用 Verilog HDL 或 VHDL 建模的复杂数字逻辑进行仿真,然后再自动综合以生成符合要求且在电路结构上可以实现的数字逻辑网表 Netlist,根据型仿真验证无误后用于制造ASIC芯片或写入 EPLD 和 FPGA 器件中。 Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得Verilog HDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI 组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995. Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。 2 关于课程设计 2.1 课程设计目的 理论联系实际,巩固和运用所学课程,提高分析、解决计算机技术实际问题的独立工作能力,通过对一个智力抢答器的设计,进一步加深对计算机原理以及数字电路应用技术方面的了解与认识,进一步熟悉数字电路系统设计、制作与调试的方法和步骤。巩固所学课堂知识,理论联系实际,提高分析、解决计算机技术实际问题的独立工作能力。为了进一步了解计算机组成原理与系统结构,深入学习EDA技术,用Verilog HDL语言去控制将会使我们对本专业知识可以更好地掌握。 2.2 课程设计的内容

基于FPGA的四路抢答器的Verilog HDL代码

module qiangda4(clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4,Led1,Led2,Led3,B uzzer); // 开始声明各个端口 //输入口 input clk,clr,inputEn,add,stu,inputL1,inputL2,inputL3,inputL4; //输出口 output [0:7] Led1; //倒计时时使用的LED控制端 output [0:7] Led2; //数码管控制端 output [0:7] Led3; //分数显示数码管控制端 output Buzzer; //蜂鸣器 //各个寄存器变量声明 reg [0:7] Led1; reg [0:7] Led2; reg [0:7] Led3; reg cnt=32'b0; reg Buzzer; reg score=4’hf;//分数显示寄存器 //配置寄存器,EnFlat是表明开始抢答的标志位 reg EnFlat=1'b0; //BuClk是蜂鸣器的标志位 reg BuClk=1'b0; //BuL是做蜂鸣器的延时用 reg [0:7]BuL=8'd0; //抢答选手标志位 reg answer=3’d0; //各组分数标志位 reg score1=4’d5; reg score2=4’d5; reg score3=4’d5; reg score4=4’d5; //------------初始化模块--------------- always @ (posedge clk)//捕捉时钟 begin //初始化各按键并开始抢答 begin if(inputEn==1'b0) begin //初始化各个标志位和参数

Verilog语言基础教程

Verilog HDL Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象 设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。 Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。 Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。 =============================== 中文版Verilog HDL简明教程:第1章简介 Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。 Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。 Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。 历史 Verilog HDL语言最初是于1983年由Gateway Design Automation公司为其模

verilog抢答器设计报告

湖北师范学院电工电子实验教学省级示范中心电子版实验报告 第2页,共6页 抢答器 一.任务解析 用Verilog 硬件描述语言设计抢答器,实现: 1、四人通过按键抢答,最先按下按键的人抢答成功,此后其他人抢答无效。 2、每次只有一人可获得抢答资格,一次抢答完后主持人通过复位按键复位,选手再从新抢答。 3、有从新开始游戏按键,游戏从新开始时每位选手有5分的初始分,答对加1分,答错扣1分,最高分不能超过9分,当选手得分减为0时取消该选手抢答资格。 4、选手抢答成功时其对应的分数闪烁。 二.方案论证(画框图并分析) 抢答部分(对应snatch 模块)在quartusII 下的仿真原理图如下所示:

抢答部分的代码如下:

计分模块的代码如下:

顶层模块的代码如下: 三.重难点解析 抢答器的核心部分为巧妙地利用D触发器的反馈,在检测到第一个上升沿时将按键(未按下时接低电平)接入的与门锁住,以保证与门只有一个上升沿输出,从而实现“最先按下按键的人抢答成功,此后其他人抢答无效”。在与门输出上升沿的同时检测按键,以确定是哪位选手抢答,用寄存器存下抢答选手的信息,最后确定哪个led灯亮以及那位选手对应的分数闪烁。至于取消0分选手抢答资格,则是将各选手的分数反馈到选手抢答的按键,通过与门关闭相应选手按键上升沿的进入。其他功能的实现相对简单,在此不再赘述。 将各模块代码写好并测试后,在主模块中调用并分配引脚,引脚分配好后,从新编译、下载就可实验了。分别验证上述的各种功能,看是否达到预期的效

果。 四.硬件资源分配(给出引脚分配说明) 芯片选用EP1K30TC114-3,clr接全局清零键pin124,start(游戏从新开始键)接pin49,up(加分键)接pin47,down接pin48,四个抢答按键key3、key2、key1、key0、分别接pin59、pin60、pin62、pin63,7段数码管的7盏灯a、b、c、d、e、f、g分别pin118、pin119、pin120、pin121、pin122、pin128、pin130,数码管选择信号sel0、sel1、sel2分别接pin132、pin133、pin135,抢答指示灯led0、led1、led2、led3分别接pin136、pin137、pin138、pin140。 五.结果分析 验证过程如下: 1、分别按下start和clr键,游戏处于初始状态,此时8个数码管等间隔地显 示4个5分,分数不闪烁。 2、按下key0键,此时led0亮,第一个分数闪烁,再按其他按键,数码管及灯 的状态不变。按下clr键,再同时按下几个按键,仍只有一个灯亮,且对应的分数闪烁,在按下clr键之前不管怎么按四个抢答键,数码管及灯的状态不变。 3、不断按下key1键抢答并给其加分,一直加到9,发现分数加到9时不能再 加了。 4、不断按下key2键抢答并给其减分,一直减到0,发现分数减到0时再按key2 抢答时没反应,led2不亮且对应的分数也不闪。而按其他键抢答仍然有效。 通过对以上结果的分析发现,该抢答器具备了我们当初要求的功能,该抢答器总体上是比较成功的。 六.经验总结

jtag的经典例子,verilog

jtag的经典例子 module jtag(TCK,TMS, TDI, PROGRAM_COUNT, SFR_DATA, SOURCE_DI, XRAMDI, PROGDI, TRESET, SCLK, //Output TDO, //SOURCE_AJ, DESTIN_AJ, XRAMAJ, PROGAJ, DESTIN_DOJ, XRAMDOJ, PROGRAM_COUNTJ, PROGDOJ, NXRAMRJ, nXRAMWJ, NPSENJ ,PROGWE, SFR_WRITEJ, Write_SFR, Read_SFR , Read_RAM, NDESTIN_WEJ, nDESTIN_WEJ, Write_PC, ICReset,ICDisable,ICClock_Disable,ICClock_Enable ); //Input input TCK; input TMS; input TDI; input TRESET; input SCLK; //IC stop feedback signal at step_into state

input [15:0] PROGRAM_COUNT; //present PC value input [7:0] SFR_DATA; input [7:0] SOURCE_DI; input [7:0] XRAMDI; input [7:0] PROGDI; //Output output ICReset; output ICDisable; output ICClock_Disable; output TDO; //output [7:0] SOURCE_AJ; //output [15:0] XRAMAJ; //output [15:0] PROGAJ; //output [7:0] DESTIN_DOJ; //output [7:0] XRAMDOJ; //output [7:0] PROGDOJ; //output [15:0] PROGRAM_COUNTJ; output Write_PC; output NXRAMRJ; output nXRAMWJ;//NXRAMWJ, output NPSENJ;

Verilog程序例子

modul e and1(a, b, c); input a; input b; output c; assign c = a & b; endmodul e `timescale 1ns/1ns modul e t; reg a; reg b; wire c; and1 t(a,b,c); initial begin a=0; b=0; #100 a = 1; b = 0; #100 a = 0; b = 1; #100 a = 0; b = 0; #100 a = 1; b = 1; #100 $stop;

end initial $monitor("a = %d, ", a, " b = %d, ", b, "c = %d\n", c); endmodul e modul e add(a, b, in, c, out); input a; input b; input in; output c; output out; assign {out, c} = a + b + in; endmodul e `timescal e 1ns/1ns modul e count_t; reg clk; reg a; reg b; reg in; wire c; wire out; ad d process(a, b, in, c, out);

initial clk = 0; always forever #5 clk = ~clk; initial begin a = 0; b = 0; in = 0; #10 a = 0; b = 0; in = 1; #10 a = 0; b = 1; in = 0; #10 a = 0; b = 1; in = 1; #10 a = 1; b = 0; in = 0; #10 a = 1; b = 0; in = 1; #10 a = 1; b = 1; in = 0; #10 a = 1; b = 1; in = 1; end initial begin #200 $finish; end initial $monitor(" out = %d, c = %d\n", out, c); endmodul e modul e compare (equal, a, b); input a,b; output equal; assign equal= (a==b)?1:0; endmodul e `timescal e 1ns/1ns modul e t; reg a, b; wire equal; initial begin a=0; b=0; #100 a = 1; b = 0;

相关主题
文本预览
相关文档 最新文档