您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页基于Verilog+HDL语言的FPGA设计

基于Verilog+HDL语言的FPGA设计

来源:筏尚旅游网
中文核心期刊《微计算机信息》(测控自动化)2004年第20卷第10期基于VerilogHDL语言的FPGA设计(1.西南科技大学;2.哈尔滨理工大学)彭保1范婷婷2马建国1Peng,BaoFan,TingtingMa,JianguoApplicationofVerilogHDLLanguageinFPGADevelopment摘要:采用VerilogHDL语言在Ahera公司的FPGA芯片上实为具体FPGA/CPLD等目标芯片的网表文件,这种避开具体器件结构的方式也是它的重要优势之一。下面以RISC—CPU关键部分状态控制器的设计为例具体说明。现了RISC_CPU的关键部件状态控制器的设计,以及在与其它各种数字逻辑设计方法的比较下。显示出使用VerilogHDL语言的优越性.关键词:VerilogHDL;n’GA:EDA分类号:TP39文献标识码:A文章编号:1008-0570(2004)olo-0080一03状态控制器的设计非常能代表典型的控制电路的设计方式。RISCCPU中的状态控制器(如图1所示)由两部分组成:状态机(图1中的CONTROL部分)和状态机控制器(图1中的CON—TROLCTL部分)。Abstract:AmeansofFPGA/CPLDilogdevelopmentbasedVer-CLKlZEROINC—PCHDLtoisintroducedinofdetailthroughdigitallogicdesignexample.Corn—advantageofparedothermeansisLOAD-ACCdesign,thetheVerilogHDLshowed.LOAD_PCKeywords:VerUogHDL;FPGA;EDA1引言在近年来,随着微电子学和计算机科学的迅速发展.给E—DA(电子设计自动化)行业带来了巨大的变化。特别是进入20世纪90年代后.电子系统已经从电路板级系统集成发展成为包括ASIC、FPGA和嵌入系统的多种模式。可以说EDA产业已经成为电子信息类产品的支柱产业。EDA能蓬勃发展的关键技术之一就是采用了硬件描述语言(HDL)描述电路系统,这也是计算机应用的一次重大突破,硬件描述语言的出现使电子系统的设计可以象编C程序一样简单易学,从而让软件工程人员很容易了解硬件的设计。对于FPGA和CPLD开发而言,比较流行的HDL主要有VerilogHDL、VHDL、ABEL—HDL和AHDL等。其中VHDL和Verilog髀CONTROLCTL卜TSRANEI卜^一ENACONTROLRDWRLOAD-IROPCODE[2:0]HALTINTFLAGDATACTL_ENAA 图1状态控制器状态机控制器接受复位信号RST,当RST有效时通过信号ENA使其为0,输入到状态机中停止状态机的工作。状态机是CPU的控制核心.用于产生一系列的控制信号.启动或停止某些部件。CPU何时进行读指令读写I/0端口、RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变state记录.state的值就是就是当前这个指令周期中经过的时钟数。指令周期由8个时钟周期组成,每个时钟周期都要完成固定的操作。第0个时钟.因为CPU状态控制器的输出RD和LOAD_IR为高电平。其余均为低电平.指令寄存器寄存由ROM送来的高8位指令代码;第1个时钟,与上一时钟相比只是INC_PC从0变为1,故PC增1,ROM送来低8位指令代码,指令寄存器寄存该8位代码;第2个时钟,空操作;第3个时钟,PC增1,指向下一条指令。若操作符为HLT,则输出信号HLT为高,如果操作符不为HLT,除了PC增l外,其他各控制线输出为零;第4个时钟,若操作符为AND。ADD,XOR或LDA,读相应地址的数据,若为JMP,将目的地址送给程序计数器,若为STO,输出累加器数据;第5个时钟,若操作符为ANDD,ADD或XORR,算术运算器就进行相应的运算,若为LDA.就把数据通过算术运算器送给累加器,若为SKZ,先判断累加器的值是否为0,如果为0,PC就增1,否则保持原值,若为JMP,锁存目的地址,若为STO。将数据写入地址处;第6个时钟,空操作;第7个时钟,若操作符为SKZ且累加器值为0,则PC值再增1,跳过一条指令,否则PC无变化。moduleinputoutputHDL因适合标准化的发展方向而最终成为IEEE标准。但与VHDL相比VerilogHDL有个最大的优点是:它是一种非常容易掌握的硬件描述语言。只要有C语言的编程基础,~般经过2到3个月的认真学习和实际操作就能掌握这种设计技术。并且完成同一功能它的程序条数一般仅为VHDL的113。2设计实例通常设计数字电路大都采用自顶向下将系统按功能逐层分割的层次化设计方法.这比传统自下向上的EDA设计方法有更明显的优势(当时的主要设计文件是电路图)。因为由自顶向下的设计过程可以看出.从总体行为设计开始到最终逻辑综合,形成网络表为止。每一步都要进行仿真检查,这样有利于尽早发现系统设计中存在的问题.从而可以大大缩短系统硬件的设计周期。这也是HDL语言设计系统硬件的最突出的优点之一。并且在顶层设计中,要对内部各功能块的连接关系和对外的接口关系进行描述。而功能块实际的逻辑功能和具体的实现形式则由下一层模块来描述。在系统的底层设计中。由于其对系统很强的行为描述能力,可以不必使系统层层细化,从而避开具体的器件结构.从逻辑行为上直接对模块进行描述和设计,随后EDA设计软件或相应的第三方工具软件中的综合器将程序自动综合成彭保:硕士研究生国家八六三项目(2002AAl21063)第五媒体物理链路传输协议研究;国家自然科学基金项目(60272014)共享信息第二类网络中国自控网:http://www.autocontr01.com.cn一80—120元,年邮局订阅号:82.946eontroled(ena,fetch,“t);fetch,rst;ena;regena;always@(posedgefetchposedgeIsl)电话:010.621万方数据 电子设计beginelsebeginif(rot)ena<=O;{inc—pc,load_acc,load_pc,rd}<=47endstate<=4;b1000;elseena<=1:{wr,load—ir,datacfl—ena,halt}<=47b0000;endendmoduleend4:/,44取操作数”//pformbeginI....。。..........一【.一图2状态机控制器的仿真波形moduleif(opcode=_jmp)begin{inc_pc,load_acc,load_pc,rd)<=4’b0010;fwr,load—ir,datactl_ena,haiti<=47b0000;endelsecontroll(inc_pc,load_acc,load_pc,rd,wr,load_Jr,dat—actl_ena,halt,clkl,zero,ena,opcode);outputoutputinputinc—pc,load_acc,load_pc,rd,wr,load_indatactl_ena,halt;elkl,zero,ena;if(opcode==add1|opcode==andd|IopeodeI|opcode==lda)begininput[2:0]opcode;regreginc_pc,load_acc,load_pc,rd,wr,load_ir;datacfl_ena,hah;{inc—pc,load_acc,load_pc,rd}<=4’b0001;{wr,load_ir,datactl—ena,hah}<=4endb0000;reg[2:0]state;parameterhit=3andd=3b111:b000,skz=3b001,add=3’b010,elseb011,xorr一-'3’b100,lda=3’b101,sto=3’bllO,jmp=3always@(posedgeclkl)begini“opcode==sto)begin{ine—pc,load_acc,load_pc,rd】<=47endelseb0000;fwr,load_ir,datactl_ena,halt}<=4’b0010;iff!ena) beginstate<=3b000;begin{inc_pc,load_acc,load_pc,rd)<=47b0000;fwr,load_it,datactl_ena,halt}<=47b0000;endelse{inc_pc,load_ace,loadpc,rd)<=4’b0000;{wr,load_ir,datactl—ena,hah}<=4endstate<=5;endb0000;easex(state)0:,/木+添加高8位到结构单元中{。,,begin5:}}卑{操作卑毒}}begin{inc_pc,load—acc,load_pc,rd)<=4’b0001;{wr,load_Jr,datactl_ena,halt}<=47bOl00;state<=1:if(opcode==addl|opcode==andd||opcode==xorr||op—code==lda)beginend{inc—pc,load_acc,load_pc,rd}<=47b0101;{wr,load_ir,datactl_ena,hah}<=47b0000;endelse1:胪+pc加1后装入低8位指令+s//begin{inc—pc,load—acc,load_pc,rd)<=4’b1001;{wr,load_ir,datactl_ena,halt}<=4’bOl00;state<=2;if(opeode=_jmp)beginendfinc_pc,load_acc,load_pc,rd)<=4’b1010;fwr,load_ir,datactl_ena,halt}<=47b(}000;endb0000;2://木{空操作”//begin{inc_pc,load_acc,load_pc,rd)<=47{wr,load_ir,dataetl_ena,hah}<=47state<=3;elseb0000;if(opcode==sto)beginend{inc_pc,load_ace,loadpc,rd)<=4’b0000;fwr,load_ir,datacd_ena,halt}<=4’blOlO;endelsebeginb1000;3:,,tt设置下一条指令地址#//begini“opcode==hlt)begin{inc—pc,load_acc,load_pc,rd)<=4end{inc_pc,load_ace,load_pc,rd)<=47b0000;fwr,load—ir,datactl_ena,hah}<=4’b0000;end{wr,load_ir,datactl—ena,halt}<=47b0001;T,F)万方数据 L箩国自控网邮局订阅号:82.946/!、中国自控网:http://www.autocontr01.ca120元/年一81—中文核心期刊《微计算机信息》(测控自动化)2004年第20卷第10期state<=6;endcontrolctl(ena,fetch,rst)和他下面的几个说明语句,就是模块的端口,声明了模块的输入、输出口。接下来就是模块中最重要的部分逻辑功能的定义,在模块中产生逻辑,VerilogHDL语言有3种方法:(1)用“assign”声明语句。这种方法很简单,只需写一个“assign”,后面再加一个方程式即可。这也是最常用的方法之’一。b0000;6:胪}空操作”,/begini“opcode==sto)begin{inc—pc,load_ace,load_pc,rd)<=47endelse如程序中的assignz==(state==D&&x==1)?1:O:就表示状态为D时又收到了1,表明收到“01101”应使z输出为高电平。(2)用“always”块。它常被用来描述时序逻辑,上面的程序中即用这个模块完成了状态机的状态转化功能。(3)采用实例元件的方法。这时只要键入元件的名字和相连的引脚即可。由上面controll程序也可以看出与我们常用的c语言结构很相似.因此.用时也就相应容易很多。上述程序输入完成后,接下来首先要经EDA设计软件进行编泽。本设计采用的是美国ALTERA公司的MAX+PLUSII软件,经Compiler编译器编译,没有任何问题后。建网表、逻辑综合、适配、划分、时域分析、装配等均已自动完成,并生成多个后续工作要用的文件。编译成功表明已为所设计的项目建立了一个编程文件,但还不能说明该文件在各种情况下都有正确的响应,因此编译通过后还要进行功能和时序仿真,仿真结果如图2和3所示。经仿真发现会有一段延时,可以用MAX+PLUSII软件带的定时分析工具分析出这段延时的时间,后做相应的处理。这样,经Verilog{wr,load_ir,datactl—ena,hah}<=47b0010;if(opcode==add|Iopcode==andd}|opcode==xorropcode==lda)begin{inc—pc,load—ace,load_pc,rd)<=47b0001;(wr,load_ir,datactl_ena,hah}<=4’b0000;endelsebegin{inc—pc,load_ace,load_pc,rd)<=4’b0000;{wr,load—ir,datactl—ena,hah}<=47endstate<=7;endb0000;HDL语言的文本编辑、编译、仿真波形编辑、仿真和定时分析一系列设计步骤.设计出符合要求的数字系统后就可以通过编程器下载到指定的芯片中去,以生成ASIC芯片。综上所述,则更能体会到VeillogHDL语言的优势:由于它在其门级描述的底层,也就是晶体管开关的描述方面比VHDL等各种其它的HDL语言有更强的功能。所以在复杂数字逻辑电路b1000;7:胪。操作skz指令}4/,beginif(opcode==skz&&zero==1)begin {inc—pc,load_ace,load—pc,rd)<=47endelsebegin和系统的设计仿真时更有优势;描述的设计思想、电路结构和逻辑关系清晰明了,并且设计语言简练、易学易用:其模块化分层结构在大规模设计时更能体现出优势。因此可以看出,VerilogHDL语言在EDA设计中相对与其它的各种硬件描述语言更有优势。{wr,load—ir,datactl_ena,hah}<=47b0000;{inc—pc,load_ace,load_pc,rd)<=47endstate<=0;enddefauh:beginb0000;fwr,load—ir,datactl—ena,hah}<=47b0000;3结束语随着集成电路规模的越来越大,数字系统设计的越来越复杂.VerilogHDL语言在硬件电路设计的优越性也会越来越显突出。目前,数百万门规模的FPGA/CPLD已进入实用,VerilogHDL强大的系统描述能力、规范的设计结构和简洁、灵活的编程风格会使其必将能会用来完成大数字系统、超大规模数字系统的几乎全部设计任务。参考文献f1]夏宇闻.复杂数字电路与系统的VerilogHDL设计.北京:北京航空航天大学出版社,1998.f2]t诚,薛4,NII,钟信潮.FPGA/CPLD设计工具XILINXISE5.X使用祥解.北京:人民邮电出版社,2003.[3]候伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计.西安:西安电子科技大学出版社,1997.[4]夏宇闻.Verilog数字系统设计教程.北京:北京航天航空大学出版社,2003.{inc_pc,load_ace,load_pc,rd)<=47b0000;fwr,load—ir,datactl—ena,hah}<=47b0000;state<=0;endendcaseendendmodulep:嚣一一—岫load口c一mu—一inc_,c【:自;;再元霞霞忑鬲毛吾再i再鬲I。[二二二二二二rr--———i————————————一o亡二二二二二二r——=[二二二二二二二二]———[二o【厂]一一]作者简介:彭保,男,1979年9月生,汉族,硕士研究生,研究方向为数字系统设计.数据广播;E—maihpengyu323@eyou.com;电话:0816-608137813990121129厂|苫=。…l。E三j正三j面疆蕊虱重庖夏三重三殖面面匾I巨亚咂正题亘姬互1;匝)匝X砸][亘Ⅺ巫][画](亟D亘D回圆圃四(-学哪曲(621002四川绵阳西南科技大学信控学院)彭保马建国(150090哈尔滨哈尔滨理工大学)范婷婷图3状态机的仿真波形可以看出,VerilogHDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间实现特定的功能的。每个模块都由两部分组成,一部分描述接口;另一部分描述逻辑功能。即定义输入是如何影响输出的。如程序中的中国自控网:http://www.autocontr01.com.cn一82—120元,年邮局订阅号:82.946(SouthwestUniversityofScience621002andTechnology,MianyangTechnology,HaerbinChina)Peng,BaoUniversityofMa,Jianguoand(Harbin150090ScienceChina)Fan,Tingting(收稿日期:2004.4.16)电话:010.621万方数据 基于Verilog HDL语言的FPGA设计

作者:作者单位:刊名:英文刊名:年,卷(期):被引用次数:

彭保, 范婷婷, 马建国

彭保,马建国(621002,四川绵阳西南科技大学信控学院), 范婷婷(150090,哈尔滨,哈尔滨理工大学)

微计算机信息

CONTROL & AUTOMATION2004,20(10)10次

1.夏宇闻 Verilog数字系统设计教程 2003

2.候伯亨;顾新 VHDL硬件描述语言与数字逻辑电路设计 1997

3.王诚;薛小刚;钟信潮 FPGA/CPLD设计具XILINX ISE5.X使用详解 20034.夏宇闻 复杂数字电路与系统的Verilog HDL设计 1998

1.期刊论文 李桂林.苗长新.Li Guilin.Miao Changxin 基于Verilog HDL的FPGA数字系统设计优化 -计算机与数字工程2010,38(8)

文章介绍了基于FPGA的数字系统设计优化的两种重要技术:流水线设计技术和资源共享设计技术,并通过两个具体的示例,详细说明了如何利用Verilog HDL语言来编写优化程序,并通过定时分析及资源耗用结果对比分析了优化设计前后电路在速度与资源利用率等性能指标上的差别.

2.期刊论文 田佳.王一平.TIAN Jia.WANG Yi-ping 基于FPGA的带CRC校验的异步串口通信 -现代电子技术2010,33(20)

由于FPGA具有速度快.效率高,灵活稳定.集成度高等优点,所以为了提高串口通信的速度和效率,在串行通信中采用FPGA来实现串口通信是十分必要的.由于通信传输的不确定性以及干扰等原因,串行通信经常会出现异常情况.然而,在串行通信中添加CRC校验,可以提高通信的可靠性.采用Verilog HDL设计的一个带CRC校验的串口通信程序,对其下栽到FPGA芯片中进行实验验证,得到的结论是用FPGA进行串口通信,可大大提高通信的速度和效率,且CRC校验确保了通信的准确性及卡可靠性.

3.期刊论文 谭安菊.龚彬.TAN Anju.GONG Bin USB2.0控制器CY7C68013与FPGA接口的Verilog HDL实现 -电子工程师2007,33(7)

USB(通用串行总线)控制器CY7C68013因其数据传输速率快和多样的接口方式为ATA、FPGA(现场可编程门阵列)和DSP(数字信号处理器)等提供了简单和无缝连接接口而得到广泛使用,介绍了此控制器与FPGA接口的控制和HDL(硬件描述语言)实现方法.利用CY7C68013控制器的Slave FIFO从机方式,用Verilog HDL在FPGA中产生相应的控制信号,实现对数据的快速读写.试验结果表明此方案传输速度快、数据准确,可扩展到其他需要通过USB进行快速数据传输的系统中.

4.期刊论文 彭保.吴坚.于青梅.马建国 Verilog HDL语言在FPGA/CPLD开发中的应用 -今日电子2004(5)

通过设计实例详细介绍了用Verilog HDL语言开发FPGA/CPLD的方法,并通过与其他各种输入方式的比较,显示出使用Verilog HDL语言的优越性.

5.期刊论文 邓莉.徐国华.曾志林.Deng Li.Xu Guo-hua.Zeng Zhi-lin 基于FPGA水声通讯编码的设计与实现 -电子测量技术2010,33(11)

针对一套用于AUV(autonomous underwater vehicle)自救系统的水声应答器,提出了基于大规模逻辑器件FPGA(field-programmable gate array)的软件化分频及编码.在QuartusⅡ开发环境下,采用Verilog HDL(hardware-description-language)语言及参数化的程序设计方法,在FPGA上实现了这种软件式的分频和频率编码,与原本数字电路的实现方式比较,提高了该水声应答器系统的可靠性和集成度,降低了功耗,同时使系统的可扩展性等到了增强.

6.期刊论文 罗浩.许艳.仲佳嘉.Luo Hao.Xu Yan.Zhong Jiadia 用Verilog HDL实现基于FPGA的通用分频器的设计 -科技广场2008(10)

在数字逻辑电路设计中,常常遇到一些对时钏分频的需求.本文实现了一种基于FPGAFPGA的软件化的分频方法,通过对不同的Verilog HDL语言程序语句进行比较分析和仿真综合.

7.期刊论文 黄志文.扈晓兰.邵平.HUANG Zhi-wen.HU Xiao-lan.SHAO Ping 基于FPGA的四相步进电动机控制器的设计 -工矿自动化2010,36(4)

介绍了一种基于FPGA的四相步进电动机控制器的设计方案,给出了其控制原理、相关模块的设计及应用实例.该控制器采用全数字化控制,使用

Verilog HDL语言编程,能够实现四相步进电动机的复位、脱机、转速和正反转控制.仿真及应用结果表明,该控制器控制灵活、调速范围大、精度高、运行稳定可靠.

8.期刊论文 吴长江.赵不贿.郑博.于小燕.WU Chang Jiang.ZHAO Bu Hui.ZHENG Bo.YU Xiao Yan 基于FPGA的动态目标跟踪系统设计 -电子技术应用2010,36(3)

为了解决基于PC机的视频动态目标跟踪实时性瓶颈问题,设计出一种基于FPGA的动态目标跟踪系统.设计遵循图像处理金字塔模型,针对低层和中层算法简单、数据量大且存在一定并行性等特点采用FPGA硬件实现,而高层较复杂算法使用Nios Ⅱ软核进行C语言编程.整个设计采用Verilog-HDL对算法完成建模与实现,并在QUARTUS Ⅱ上进行了综合、布线等工作,最后以Altera公司的DE2开发板为硬件平台实现了整个系统.

9.期刊论文 陈科.唐宁.雷求胜.邓玉清.CHEN Ke.TANG Ning.LEI Qiusheng.DENG Yuqing 一种状态优化的I2C总线

主控制器的FPGA设计 -电子器件2010,33(6)

I2C总线是一种简单的双向二线制串行通信总线.在此对传统的I2C总线控制器进行改进,对I2C总线读写状态进行了优化,该方法采用移位寄存器计数来控制状态转移,利用移位寄存器结构灵活的特点达到简化状态,优化状态机性能的目的.最后采用Verilog HDL语言的行为描述,并给出系统仿真波形,仿真结果表明,设计芯片的功耗大约降低10%,面积减少25%.所设计的总线接口良好,符合I2C通信标准,实现了I2C的总线的数据通信.

10.期刊论文 苏维嘉.张澎.SU Wei-jia.ZHANG Peng 基于FPGA的TFT-LCD控制器的设计和实现 -液晶与显示2010,25(1)

在Verilog HDL设计的行、场扫描时序基础上,设计并实现了基于FPGA的TFT-LCD控制器.该控制器在修改行、场扫描时序后可以驱动不同分辨率的TFT-LCD,具有很好的移植性.

1.胡林锋.于映 H.2/AVC解码端帧内预测的设计与实现[期刊论文]-微计算机信息 2009(9)2.徐燕.孙丽华 基于FPGA实现变采样率FIR滤波器的研究[期刊论文]-微计算机信息 2009(20)3.江健康 基于Verilog HDL的FIR数字滤波器设计与仿真[期刊论文]-微计算机信息 2007(8)4.陈媛.黄贤英 基于EDA技术的定向型计算机硬件设计[期刊论文]-微计算机信息 2007(29)5.蒋昊.李哲英 基于多种EDA工具的FPGA设计流程[期刊论文]-微计算机信息 2007(32)6.陈媛 TDN-CM++系统中断功能的实现[期刊论文]-微计算机信息 2007(32)

7.齐京礼.宋毅芳.陈建泗 VHDL语言在FPGA中的应用[期刊论文]-微计算机信息 2006(35)

8.郭文彬.孙智权.赵不贿.徐雷钧 基于NiosⅡ的USB接口模块设计[期刊论文]-微计算机信息 2006(29)9.聂翔.王春侠 基于FSM的电梯控制系统的设计与实现[期刊论文]-微计算机信息 2006(25)

10.周贤伟.程柏.覃伯平 基于软件无线电的自定义相位扩频编码与FPGA实现[期刊论文]-微计算机信息 2006(17)

本文链接:http://d.wanfangdata.com.cn/Periodical_wjsjxx200410038.aspx

授权使用:大连理工大学图书馆(dllg),授权号:4c179d07-d75a-4af6-b049-9eda013049a8

下载时间:2011年5月5日

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务