当前位置:文档之家› verilog硬件描述语言课程设计

verilog硬件描述语言课程设计

verilog硬件描述语言课程设计
verilog硬件描述语言课程设计

Verilog课程设计题

函数发生器(方波和阶梯波)

学生:

专业:

班级:

指导教师:

完成日期:

目录

1、概述 (1)

2、功能 (2)

3设计方案(设计的技术方案、工作原理、设计框图) (3)

4设计与仿真 (11)

5、结束语 (14)

6附录 (15)

1.概述

(1)实验目的:

在基于QUARTUS2软件平台下,运用Verilog硬件描述语言来进行编写两种波形(方波和阶梯波)发生的程序,并结合DE2板与DVCC 实验板上的D/A转换器在示波器显示出波形。初步了解Verilog的编程及DE2板的应用,加强对其的实际应用操作能力。

(2)实验要求:

运用DE2上的DAC实现方波、阶梯信号发生器功能。方波频率、占空比可设置。阶梯波信号频率、幅度可调。

在完成基本要求的基础上,可进一步增加功能、提高性能。

2.功能

实验容:

5 . 利用简易函数发生器

基本要求:运用DE2上的DAC实现方波、阶梯信号发生器功能。方波频率、占空比可设置。阶梯波信号频率、幅度可调。

在完成基本要求的基础上,可进一步增加功能、提高性能。

3设计方案(1)设计流程图

(2)波形产生的基本原理

1.先利用时钟信号f_clk产生一个工作频率,输入的频率字保存在频

率寄存器中,经N位相位累加器,累加一次,相位步进增加,经过部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形。

2.利用存储器,先把定点值存入存储器中,再通过choose选择所需

要的那段地址的值,在通过data读出值。

3.最后利用波形仿真,通过转换把数字量转换为波形图。

(3)产生波形频率可调的方法

采用设置频率控制字的方法,设置一个输入端口【5:0】q,并且下载时将其绑定在6个控制开关上,可以实现频率的调整,采用2进制,q的值就是频率的缩小(扩大)倍数。

(4)源程序

module sq(f_clk,p,choose,data);//端口设定

input [5:0] p; //频率控制字

input choose; //波形选择

input f_clk; //置晶振

output [7:0] data;

wire [7:0]data;

reg [5:0] addr,address;

reg [5:0] i;

reg f_out;

initial

begin

i<=0;

addr<=0;

f_out<=0;

end

always (posedge f_clk) //利用计数器实现任意分频begin

if(i==p) //设定频率控制字p

begin

i=0;

f_out=~f_out;

end

else

i=i+1;

end

function [7:0] romout; //ROM的设定

input[5:0] address;

case(address) //各波形初值的预装入

0 : romout = 255; //阶梯波初值

1 : romout = 255;

2 : romout = 255;

3 : romout = 255;

4 : romout = 128;

5 : romout = 128;

6 : romout = 128;

7 : romout = 128;

8 : romout = 64;

9 : romout = 64;

10: romout = 64;

11: romout = 64;

12: romout = 0;

13: romout = 0;

14: romout = 0;

15: romout = 0;

16 : romout = 255; //方波初值

17 : romout = 255;

18 : romout = 255;

19 : romout = 255;

20 : romout = 255;

21 : romout = 255;

22 : romout = 255;

23 : romout = 255;

24 : romout = 0;

25 : romout = 0;

26: romout = 0;

27: romout = 0;

28: romout = 0;

29: romout = 0;

30: romout = 0;

31: romout = 0;

default : romout = 10'hxx;

endcase

endfunction

always(posedge f_out)

begin

if(addr==16) //波形数据切换

addr=0;

else

addr=addr+1;

case(choose) //波形选择开关设定

0: address=addr;

1: address=addr+16;

endcase

end

assign data = romout(address);//将ROM中对应数据传递输出端口data输出

endmodule

4程序编译及仿真结果

(1)引脚的绑定图

(2)仿真编译图阶梯波仿真结果

方波仿真结果

(3)波形产生效果图阶梯波效果图

方波效果图

5.结束语

经过两周的课程设计,我觉得自己更进一步认识了Verilog语言的使用,并且对整个设计制作和仿真流程有了更深入的了解,从实验的迷惑到后来的熟练操作,再到实验报告撰写的结束,其中的每一步都是我受益匪浅。坚持靠自己的独立思考并通过一步步的调试,最终成功地摸索程序并且进行了进一步优化最终完成实验,不但锻炼了逻辑思维能力,并且锻炼了自己的独立探索能力。

虽然自己的程序不是那么完美,但是每一步都有自己的劳动,都有自己的思想在其中,可以说,实验的结果自己还是比较满意的。但是很明显有许多有待加强的地方。实验综合性较强也比较复杂,在实验中涉及了本学期多个知识点,其中让我印象最深的是 initial语句和function说明语句,因为这两个语句之前用得比较少。我觉得这样的实验比较贴近学习和工作,通过自己动手更加能够充分掌握所学知识点,将书本和实际结合起来,希望以后可以开展更多这样的实验。

实验中也遇到了许多问题,比如,实验效果图出不来之类。但通过两位老师的指导,最终把问题一一解决。这对我来说是一次飞速的成长。老师的指导!

6.附录

DE2简介

1.核心的FPGA芯片-Cyclone II 2C35 F672C6,从名称可以看出,它包含有35千个LE,在Altera的芯片系列中,不算最多,但也绝对够用。Altera下载控制芯片- EPCS16以及USB-Blaste对Jtag的支持。

2.存储用的芯片有: 512-KB SRAM,8-Mbyte SDRAM,4-Mbyte Flash memory

3.经典IO配置:拥有4个按钮,18个拨动开关,18个红色发光二极管,9个绿色发光二极管,8个七段数码管,16*2字符液晶显示屏

4. 超强多媒体:24位CD音质音频芯片WM8731(Mic输入+LineIn+ 标准音频输出),视频解码芯片(支持NTSC/PAL制式),带有高速DAC视屏输出VGA模块。

5.更多标准接口:通用串行总线USB控制模块以及A、B型接口,SD Card接口,IrDA红外模块, 10/100M自适应以太网络适配器,RS-232标准串口, PS/2键盘接口

6.其他:50M,27M晶振各一个,支持外部时钟, 80针带保护电路的外接IO

7.此外还有:配套的光盘资料,QutuarsII6软件,NiosII 6.0IDE,例程与说明文档。

可编程逻辑器件与硬件描述语言

组合逻辑电路实验(一)实验报告 一.实验名称:3-8译码器设计 二.实验目的 1.掌握ISE 开发工具的使用,掌握FPGA 开发的基本步骤; 2.掌握组合逻辑电路设计的一般方法; 3.掌握程序下载方法,了解UCF 文件的格式; 4.初步了解开发板资源,掌握开发板使用方法。重点了解滑动开关和LED 显示灯的使用方法。 三.实验内容 1.用VHDL 实现3-8译码器模块 译码器电路如图2-1所示。其功能如表2-1所示。试用VHDL 实现该译码器,并在开发板上进行检验。 表2-1 译码器功能表 EN A B C Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 1 X X X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 3-8 译码器 A B C EN Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 图2-1 3-8译码器

0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 2.将程序下载到FPGA并进行检验 (1)资源使用要求:用滑动开关SW3~SW1作为输入A,B,C;滑动开关SW0控制EN;8个LED灯表示8个输出。 (2)检验方法:当SW0处于ON(EN=1)位置时,所有LED灯灭;当SW0处于OFF(EN=0),反映当前输入的译码输出在LED灯上显示,即当输入为000(滑动开关SW3-SW1处于OFF状态),LED0亮,其它灯灭,等等。 四.实验步骤 1.启动ISE,新建工程文件,编写3-8译码器的VHDL模块; 2.新建UCF文件,输入位置约束; 3.完成综合、实现,生成下载文件; 4.连接开发板USB下载线,开启开发板电源; 5.下载到FPGA; 6.拨动开关,验证结果是否正确。 五.主要vhdl代码 architecture Behavioral of coder_38 is --3-8译码器行为级描述signal x:STD_LOGIC_VECTOR (2 downto 0); begin x <= A&B&C;

数字系统设计与verilog HDL课程设计

数字系统设计与verilog HDL课程设计 设计题目:实用多功能数字钟 专业:电子信息科学与技术 班级:0313410 学号:031341025 姓名:杨存智 指导老师:黄双林

摘要 本课程设计利用QuartusII软件Verilog VHDL语言的基本运用设计一个多功能数字钟,经分析采用模块化设计方法,分别是顶层模块、alarm、alarm_time、counter_time、clk50mto1、led、switch、bitel、adder、sound_ddd、sound_ddd_du模块,再进行试验设计和软件仿真调试,分别实现时分秒计时、闹钟闹铃、时分秒手动校时、时分秒清零,时间保持和整点报时等多种基本功能。 单个模块调试达到预期目标,再将整体模块进行试验设计和软件仿真调试,已完全达到分块模式设计功能,并达到设计目标要求。 关键字:多功能数字钟、Verilog、模块、调试、仿真、功能

目录 1.课程设计的目的及任务............................................................. 错误!未定义书签。 1.1 课程设计的目的 (3) 1.2 课程设计的任务与要求 (4) 2.课程设计思路及其原理 (4) 3.QuartusII软件的应用 (5) 3.1工程建立及存盘 (5) 3.2工程项目的编译 (5) 3.3时序仿真 (6) 4.分模块设计、调试、仿真与结果分析 (7) 4.1 clk50mto1时钟分频模块 (7) 4.2 adder加法器模块 (7) 4.3 hexcounter16 进制计数器模块 (7) 4.4 counter_time 计时模块 (8) 4.5 alarm闹铃模块 (8) 4.6 sound_ddd嘀嘀嘀闹铃声模块 (9) 4.7 sound_ddd_du嘀嘀嘀—嘟声音模块 (9) 4.8 alarm_time闹钟时间设定模块 (10) 4.9 bitsel将输出解码成时分秒选择模块 (10) 4.10 switch去抖模块 (11) 4.11 led译码显示模块 (11) 4.12 clock顶层模块 (12) 5.实验总结 (13) 5.1调试中遇到的问题及解决的方法 (13) 5.2实验中积累的经验 (14) 5.3心得体会 (14) 6.参考文献 (14) 1.1 课程设计的目的 通过课程设计的锻炼,要求学生掌握V erilog HDL语言的一般设计方法,掌握VerilogHDL语言的基本运用,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,基于实践、源于实践,实践出真知,实践检验真理,培养学生的

verilog硬件描述语言 上机

《硬件描述语言》上机作业西电微电子 \

第一题:用Verilog语言的结构描述和行为描述分别设计下面的电路。 A[0] Array B[0] A[1] B[1] A[2] B[2] 结构描述: 电路设计: module hw1(A,B,Y); input[2:0] A,B; output Y; wire w1,w2,w3; xor U1(w1,A[0],B[0]); xor U2(w2,A[1],B[1]); xor U3(w3,A[2],B[2]); nor U4(Y,w1,w2,w3); endmodule 仿真测试: module test_hw1; reg[2:0] A,B; wire Y; hw1 U1(A,B,Y); initial begin A=3'b000;B=3'b000; #50 A=3'b000;B=3'b000; #50 A=3'b111;B=3'b111; #50 A=3'b000;B=3'b110;

#50 A=3'b111;B=3'b000; #50 A=3'b110;B=3'b110; #50 A=3'b011;B=3'b010; #50 A=3'b001;B=3'b011; #50 A=3'b111;B=3'b010; #50 $stop; end initial $monitor($time,"\tA=%d\tB=%d\tY=%d",A,B,Y); Endmodule 行为描述: 电路设计: module hw2(A,B,Y); input[2:0] A,B; output Y; wire Y; assign Y=~((A[0]^B[0])||(A[1]^B[1])||(A[2]^B[2])); endmodule 仿真测试:

verilog课程设计—交通灯

课程论文 论文题目基于DE2的交通灯设计完成时间 课程名称Verilog语言设计 任课老师 专业 年级

1.交通信号控制器设计要求与思路 1.1设计背景 FPGA是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其种类很多,内部结构也不同,但共同的特点是体积小、使用方便。本文介绍了用VerilogHDL语言设计交通灯控制器的方法,并在QuartusII系统对FPGA芯片进行编译下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积非常小。本文通过EDA设计,利用VerilogHDL语言模拟仿真交通灯控制电路。 1.2设计要求 根据交通灯控制器要实现的功能,考虑用两个并行执行的always语句来分别控制A方向和B方向的3盏灯。这两个always语句使用同一个时钟信号,以进行同步,也就是说,两个进程的敏感信号是同一个。每个always语句控制一个方向的3种灯按如下顺序点亮,并往复循环:绿灯----黄灯----红灯,每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置数法设计,这样只需改变预置数据,就能改变计数器的模,因此每个方向只要一个计数器进行预置数就可以。为便于显示灯亮的时间,计数器的输出均采用BCD码,显示由4个数码管来完成,A方向和B方向各用两个数码管。设定A方向红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s,B方向的红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s。假如要改变这些时间,只需要改变计数器的预置数即可。 1.3设计思路 两个方向各种灯亮的时间能够进行设置和修改,此外,假设B方向是主干道,车流量大,因此B方向通行的时间应该比A方向长。交通灯控制器的状态转换表见下表。表中,1表示灯亮,0表示灯不亮。A方向和B方向的红黄绿分别用R1、Y1、G1、R2、Y2、G2来表示。

硬件描述语言及器件实验指导书

硬件描述语言及器件实验指导书 电子科学与技术专业组

第1章实验一用硬件描述语言的方法设计一个三输入与门电 路 一、实验目的 1、掌握MAX+plusII的使用方法。 2、掌握VHDL语言程序的基本结构。 2、掌握使用硬件描述语言设计数字电路的方法和步骤。 3、掌握用硬件描述语言设计三输入与门电路的方法。 二、实验器材 1.台式计算机1台。 2.可编程逻辑逻辑器件实验软件1套。 3.下载电缆一套。 4.示波器一台。 三、实验说明 1.台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。 2.可编程逻辑逻辑器件实验软件向原理图的设计提供平台,并将调试好的原理图下载到可编程逻辑逻辑器件中。 3.下载电缆是可编程逻辑器件软件和可编程逻辑逻辑器件之间的接口电缆,为了便于区别,用不同颜色导线区分下载电缆的电源、地和信号,一般用红色导线接电源,用黑色导线接地。 4.示波器用于观察可编程逻辑器件执行程序时输出信号的变化。 四、实验内容与要求 用硬件描述语言的方法设计一个三输入与门电路,要求: (1)根据三输入与门的逻辑表达式,在构造体中直接使用并行赋值语句实现,并进行仿真;

(2)根据三输入与门的真值表,在构造体中使用进程语句实现,并进行仿真; 五、实验步骤(下面七个的实验的软件的使用具体步骤跟本次试验一样不再详述) 1.打开新建菜单选择“textedtiorfile”,这个文件是写程序编程用的。 2.程序写完后点“保存”,注意(1)保存的格式是.vhd,(2)保存的地址不能是桌面和硬盘的根目录,否则在后面的编程将出现错误。

3.在file→projectset→projecttocurrentfile,这步是将文件设置在工程里,能够正常编译和下载。

硬件描述语言HDL的现状与发展

硬件描述语言HDL的现状与发展 摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内EDA基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。 关键词:ASIC 硬件描述语言HDL Verilog HDL VHDL SystemC Superlog 芯片系统SoC 引言 硬件描述语言HDL是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路ASIC或现场可编程门阵列FPGA自动布局布线工具,把网表转换为要实现的具体电路布线结构。 目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计。 硬件描述语言HDL的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE 标准。 现在,随着系统级FPGA以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像Superlog、SystemC、Cynlib C++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为EDA设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。 1 目前HDL发展状况 目前,硬件描述语言可谓是百花齐放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。 而比较一致的意见是,HDL和C/C++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。 在2001年举行的国际HDL会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2

蔡觉平老师西电Verilog HDL上机大作业(硬件描述语言)_微电子学院

《Verilog HDL 数字集成电路设计原理与应用》上机作业 班级:******* 学号:******* 姓名:******* 题目1:数字集成电路的verilog HDL 描述与仿真。 要求:(1)学习使用Modelsim 设计和仿真软件; (2)练习教材7.2.1中的例子; (3)掌握设计代码和测试代码的编写; (4)掌握测试仿真流程; (5)掌握Modelsim 软件的波形验证方式。 解答: 题目2: 简述begin-end 语句块和fork-join 语句块的区别,并写出下面信号对应的程序代码 A B

解答: (1)begin-end语句块和fork-join语句块的区别: 1、执行顺序:begin-end语句块按照语句顺序执行,fork-join语句块所有语句均在同一时刻执行; 2、语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间; 3、起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间; 4、结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join语句块为执行时间最长的那条语句执行结束的时间; 5、行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join语句块为电路上电后,各电路模块同时开始工作的过程。 (2)程序代码: Begin-end语句: module initial_tb1; reg A,B; initial begin A=0;B=1; #10 A=1;B=0; #10 B=1; #10 A=0; #10 B=0; #10 A=1;B=1; end endmodule Frk-join语句: module wave_tb2; reg A,B; parameter T=10; initial fork A=0;B=1; #T A=1;B=0; #(2*T) B=1; #(3*T) A=0; #(4*T) B=0; #(5*T) A=1;B=1; join endmodule

课程名称FPGA与硬件描述语言

课程名称:FPGA与硬件描述语言 课程编码:7002301 课程学分:2学分 课程学时:32学时 适应专业:电子信息工程、电子信息工程(理工科实验班) 《FPGA与硬件描述语言》 FPGA and Hardware Describing Language 教学大纲 一、课程性质与任务 性质:本课程的授课对象为电子信息工程专业二年级本科生,课程属性为专业基础必修课,该课程讲授FPGA基本原理及结构,先进的硬件描述语言(VHDL语言),FPGA设计与应用等知识。 任务:通过对(VHDL)硬件描述语言,FPGA设计等知识的学习,掌握硬件描述语言,FPGA设计的基本知识。培养学生动手能力以及解决实际问题的能力。理解VHDL语言,学会FPGA设计方法等。 二、课程教学基本内容及要求 第一章绪论VHDL的数据和表达式 (一)教学基本要求: 掌握:VHDL程序的特点,VHDL的数据,VHDL的表达式。 了解:FPGA基本原理及结构。 (二)教学基本内容: 绪论:FPGA基本原理及结构 第一章VHDL的数据和表达式 1.1 VHDL程序的特点 1.2 VHDL程序的基本结构 1.3 VHDL的数据 1.4 VHDL的表达式 第二章VHDL的顺序描述语句 (一)教学基本要求: 掌握:信号赋值语句和变量赋值语句,if语句,case语句,null语句。 理解:loop语句。 (二)教学基本内容:

第二章VHDL的顺序描述语句 2.1信号赋值语句和变量赋值语句 2.2 if语句 2.3 case语句 2.4 loop语句 2.5 null语句 第三章VHDL的并行描述语句 (一)教学基本要求: 掌握:进程语句,并发信号赋值语句,元件例化语句。 理解:条件信号赋值语句,选择信号赋值语句。 了解:生成语句。 (二)教学基本内容: 第三章VHDL的并行描述语句 3.1进程语句 3.2并发信号赋值语句 3.3条件信号赋值语句 3.4选择信号赋值语句 3.5元件例化语句 3.6生成语句 第四章VHDL的时钟信号描述方法 (一)教学基本要求: 掌握:时钟的VHDL描述方法,时序电路中复位信号的VHDL描述方法。(二)教学基本内容: 第四章VHDL的时钟信号描述方法 4.1时钟信号的VHDL描述方法 4.2时序电路中复位信号的VHDL描述方法 第五章VHDL的有限状态机的设计 (一)教学基本要求: 掌握:有限状态机的基本概念及应用。 理解:一个Moore型有限状态机的设计实例 (二)教学基本内容: 第五章VHDL的有限状态机的设计 5.1 有限状态机的基本概念 5.2一个Moore型有限状态机的设计实例

硬件描述语言与FPGA技术实验指导书(2012版)

《硬件描述语言与FPGA技术》 实验指导书 西北工业大学 2012/10/10

目录 实验一简单的组合逻辑设计 (3) 实验二简单分频时序逻辑电路的设计 (6) 实验三利用条件语句实现计数分频时序电路 (9) 实验四阻塞赋值与非阻塞赋值的区别 (12) 实验五用always块实现较复杂的组合逻辑电路 (16) 实验六在Verilog中使用函数 (20) 实验七在Verilog HDL中使用任务(task) (23) 实验八利用有限状态机进行时序逻辑的设计 (27) 实验九利用状态机实现比较复杂的接口设计 (32) 练习十利用SRAM设计一个FIFO (39)

实验一简单的组合逻辑设计 一、实验目的 1. 学习Quartus和ModSim两种EDA工具的使用方法; 2.掌握基本组合逻辑电路的实现方法; 3.初步了解两种基本组合逻辑电路的生成方法; 4.学习测试模块的编写; 5.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验内容 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 三、实验仪器、设备 预装了开发工具ModelSimSE、synplify的PC机。 四、实验原理 1.组合逻辑电路是指在任何时刻,输出状态只决定于同一时刻各输入状态的组合而与 电路以前状态无关,而与其他时间的状态无关。其逻辑函数如下: Li=f(A1,A2,A3……An) (i=1,2,3…m) 其中,A1~An为输入变量,Li为输出变量。 2.组合逻辑电路的特点归纳如下: ① 输入、输出之间没有返馈延迟通道; ② 电路中无记忆单元。 3.组合逻辑设计示例:可综合的数据比较器。它的功能是比较数据a与数据b,如果 两个数据相同,则给出结果1,否则给出结果0。描述组合逻辑时常使用assign 结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格 式。 模块源代码: //--------------- compare.v ----------------- module compare(equal,a,b);

硬件描述语言范例

硬件描述语言语言设计实例 1、8-3编码器 module encode_verilog ( a ,b ); input [7:0] a ; //编码器输入 wire [7:0] a ; output [2:0] b ; //编码器输出 reg [2:0] b; always @ ( a ) begin case ( a ) //编码器某一输入端口为高电平输出相应的3位二进制数 8'b0000_0001 : b<=3'b000; //0 8'b0000_0010 : b<=3'b001; //1 8'b0000_0100 : b<=3'b010; //2 8'b0000_1000 : b<=3'b011; //3 8'b0001_0000 : b<=3'b100; //4 8'b0010_0000 : b<=3'b101; //5 8'b0100_0000 : b<=3'b110; //6 8'b1000_0000 : b<=3'b111; //7 default : b<= 3'b000; //其他情况编码器输出3’b000 endcase end endmodule 2、8-3优先编码器 module p_encode_verilog ( A ,I ,GS ,EO ,EI ); //编码器以低为有效 input [7:0] I ; //编码器输入 wire [7:0] I ; input EI ; //输入使能,EI=0时,编码器正常工作 wire EI ; output [2:0] A ; //编码器输出 reg [2:0] A ; output GS ; //优先编码器工作状态标志,编码器的八个输入端有信号输入时,GS=0 reg GS ; output EO ; //输出使能, reg EO ; always @ ( I or EI ) if ( EI ) //使用if、else if表明条件的优先级顺序 begin A <= 3'b111; GS <= 1; EO <= 1; end else if ( I[7] == 0 ) begin A <= 3'b000;

关于硬件描述语言(VHDL和Verilog)概要

关于硬件描述语言【VHDL和Verilog】 随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog HDL。 究竟选择VHDL还是verilog HDL? 这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。选择何种语言主要还是看人的使用习惯。如果您是集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。 学习HDL的几点重要提示 1.了解HDL的可综合性问题: HDL有两种用途:系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(即程序的功能可以用硬件电路实现)。不可综合的HDL语句在软件综合时将被忽略或者报错。应当牢记一点:“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。” 2. 用硬件电路设计思想来编写HDL: 学好HDL的关键是充分理解HDL语句和硬件电路的关系。编写HDL,就是在描述一个电路,写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。要做到这一点,需要多实践,多思考,多总结。 3.语法掌握贵在精,不在多: 30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,

硬件描述语言及FPGA设计复习要点

《硬件描述语言及FPGA设计》复习要点: 一、名词解释 ⑴设计方法:自顶向下和自底向上,以自顶向下为主要设计。 综合:指的是将较高级抽象层次的设计描述自动转化外较低层次的描述过程。 1.EDA :电子设计自动化 2.HDL :硬件描述语言 SoC :系统芯片 4.ASIC :专用集成电路 5.PLD :可编程逻辑器件 6.CPLD :复杂可编程逻辑器件 7.FPGA :现场可编程门阵列 8.LUT :查找表 9.JTAG :联合测试行动组 10.ISP :在系统编程 11.IP核:完成某种功能的设计模块 12.逻辑综合:将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图描述,依据给定的硬件结构和约束控制条件进行编译、优化和转换,最终获得门级电路甚至更底层的电路描述网表文件的过程。 13.设计输入:将设计者所设计的电路以开发软件要求的某种形式表达出来,并输入到相应软件中的过程。 14.下载:把适配后生成的编程文件装入到PLD器件中的过程 15.FSM: 有限状态机 16.UDP:用户自定义 17.NS:次态 18.OL:输出逻辑 二、填空 1.EDA就是以计算机为工作平台,以EDA软件工具为开发环境,以PLD器件或者ASIC专用集成电路为目标器件设计实现电路系统的一种技术。 2.在数字电路设计过程中,综合是将软件转化为硬件电路的关键步骤,是文字描述与硬件实现的一座桥梁。 3.通常,将对CPLD的下载称为编程,对FPGA中的SRAM进行直接下载的方式称配置。 4.仿真时是否考虑硬件延时分类,可分为功能仿真和时序仿真。 5.IP核主要包括硬核、固核和软核。 6.当前最流行的并且成为IEEE标准的硬件描述语言包括Verilog HDL 和VHDL 。7.当前EDA设计中普遍采用的方法是:自顶向下。

VerilogHDL硬件描述语言复习

VerilogHDL硬件描述语言复习 一、 1. Verilog HDL 是在哪一年首次被I E E E标准化的? 2. Verilog HDL支持哪三种基本描述方式? 3. Verilog HDL 是由哪个公司最先开发的? 4. Verilog HDL中的两类主要数据类型什么? 5. U D P代表什么? 6. 写出两个开关级基本门的名称。 7. 写出两个基本逻辑门的名称。 8. 在数据流描述方式中使用什么语句描述一个设计? 9. 采用结构描述方式描述1位全加器。 10. i n i t i a l语句与always 语句的关键区别是什么? 11. 采用数据流方式描述2 - 4译码器。 1 2. 找出下面连续赋值语句的错误。 assign Reset=#2 Sel^WriteBus; 二、 1. 下列标识符哪些合法,哪些非法? C O u n T, 1_2 M a n y, \**1, R e a l?, \wait, Initial 2. 在Verilog HDL中是否有布尔类型? 3. 如果线网类型变量说明后未赋值,其缺省值为多少?

4. Verilog HDL 允许没有显式说明的线网类型。如果是这样,怎样决定线网类型? 5. 下面的说明错在哪里? i n t e g e r [0:3] R i p p l e; 6. Verilog HDL有哪几大类数据类型? 7.Verilog HDL有哪几种寄存器类型? 三、 1. 假定长度为6 4个字的存储器, 每个字8位,编写Verilog 代码,按逆序交换存储器的内容。即 将第0个字与第6 3个字交换,第1个字与第6 2个字交换,依此类推。 2. 假定3 2位总线A d d re s s _ B u s, 编写一个表达式,计算从第11位到第2 0位的归约与非。 3. 假定一条总线C o n t ro l _ B u s [ 1 5 : 0 ],编写赋值语句将总线分为两条总线:A b u s [ 0 : 9 ]和B b u s [ 6 : 1 ]。 4. 编写一个表达式,执行算术移位,将Qparity 中包含的8位有符号数算术移位。 5. 使用条件操作符, 编写赋值语句选择N e x t S t a t e 的值。如果C u rre n t S t a t e的值为R E S E T, 那么N e x t S t a t e的值为G O;如果C u rre n t S t a t e的值为G O,则N e x t S t a t e 的值为B U S Y;如果 C u rre n t S t a t e的值为B U S Y;则N e x t S t a t e的值为R E S E T。 6. 如何从标量变量A,B,C和D中产生总线B u s

双口RAM应用实例

双端口RAM在高速数据采集中的应用 利用传统方法设计的高速数据采集系统由于集成度低、电路复杂,高速运行电路干扰大,电路可靠性低,难以满足高速数据采集工作的要求。应用FPGA可以把数据采集电路中的数据缓存、控制时序逻辑、地址译码、总线接口等电路全部集成进一片芯片中,高集成性增强了系统的稳定性,为高速数据采集提供了理想的解决方案。下面以一个高速数据采集系统为例介绍双端口RAM的应用。 该系统要求实现对频率为5MHz的信号进行采样,系统的计算处理需要对信号进行波形分析,信号采样时间为25μs。根据设计要求,为保证采样波形不失真,A/D采样频率用80MHz,采样精度为8位数据宽度。计算得出存储容量需要2K字节。其系统结构框图如图3所示,图4给出了具体电路连接图。

根据设计要求,双端口RAM的LPM_WIDTH参数设置为8,LPM_WIDTHAD 参数设置为11(211=2048),使用读写使能端及读写时钟。ADCLK、WRCLK和地址发生器的计数频率为80MHz。 A/D转换值对双端口RAM的写时序为顺序写方式,每完成一次A/D转换,存储一次数据,地址加1指向下一单元,因此写地址发生器(RAM_CONTROL)采用递增计数器实现,计数频率与ADCLK、WRCLK一致以保证数据写入时序的正确性。写操作时序由地址和时钟发生器、A/D转换时钟和双端口RAM的写时钟产生。停止采样时AD_STOP有效,写地址发生器停止计数,同时停止对RAM的写操作。将地址发生器的计数值接至DSP总线可以获取采样的首尾指针。地址发生器单元一般用(VHDL)语言编程实现,然后生成符号文件 RAM_CONTROL在上层文件调用。其部分VHDL语言程序如下: 对双端口RAM的读操作采用存储器映像方式,其读出端口接DSP的外扩RAM 总线,DSP可随机读取双端口RAM的任一单元数据,以方便波形分析。由于

范例-软件设计说明(详细部分).

软件设计说明

目录 1范围 (1) 1.1标识 (1) 1.2系统概述 (1) 1.3文档概述 (1) 2引用文档 (1) 3CSCI 级设计决策 (1) 4CSCI 体系结构设计 (2) 4.1CSCI部件 (2) 4.2执行方案 (3) 4.3接口设计 (3) 4.3.1接口标识和接口图 (3) 4.3.x (接口的项目唯一标识符) (4) 5CSCI 详细设计 (6) 5.X (软件单元的项目唯一标识符,或者一组软件单元的标志符) (6) 6需求可追踪性 (9) 7注解 (11) 附录A (11)

软件设计说明 1范围 1.1标识 要求:本节应包含这个文档所适用的系统和软件的完全标识,(若适用)应包括标识号、名称、缩略名、版本号及发布号。 1.2系统概述 要求: 1)本节主要描述本文档适用的系统和软件的用途; 2)概述系统开发、运行和维护的历史; 3)标识项目的投资方、需方、用户、开发方和保障机构; 4)标识当前和计划的运行现场; 5)列出其它有关文档。 1.3文档概述 本节应概述本文档的用途和内容,描述与它的使用有关的保密性或私密性考虑。 2引用文档 列出引用的所有文档,包括文档的编号、标题、修订版本和日期。 3CSCI 级设计决策 要求:本章应根据需要分节给出CSCI 级设计决策,即CSCI 行为设计的决策(忽略其内部实现,从用户角度出发描述系统将怎样运转以满足需求)和其它影响组成该CSCI 的软件单元的选择与设计的决策。如果在需求中所有这些决策是明确的,或者这些决策要推迟到CSCI 的软件单元的设计时指出,则本章应如实陈述。 针对关键性需求(例如对安全性、保密性、私密性等需求)作出的设计决策,应在专门的章节中加以叙述。 CSCI 级设计决策的例子如下: 1)关于CSCI 将接收的输入和将产生的输出的设计决策,包括与其它系统、HWCI、CSCI 和用户的接口(本文档的4.3.x 节指出本说明要考虑的主题); 2)有关响应每个输入或条件的CSCI 行为的设计决策,包括CSCI 要执行的动作、响应时间和其它性能特性,模型化的物理系统的说明,选定的方程式/算法/规则,以及对不允许的输入或条件进行的处理; 3)有关数据库/数据文件如何呈现给用户的设计决策(本文档的4.3.x 节标识了本说明

硬件描述语言HDL的现状与发展

摘要:从数字系统设计的性质出发,结合目前迅速发展的芯片系统,比较、研究各种硬件描述语言;详细阐述各种语言的发展历史、体系结构和设计方法;探讨未来硬件描述语言的发展趋势,同时针对国内eda基础薄弱的现状,在硬件描述语言方面作了一些有益的思考。关键词:asic 硬件描述语言hdl verilog hdl vhdl systemc superlog 芯片系统soc引言硬件描述语言hdl是一种用形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(eda)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路asic或现场可编程门阵列fpga自动布局布线工具,把网表转换为要实现的具体电路布线结构。目前,这种高层次(high-level-design)的方法已被广泛采用。据统计,目前在美国硅谷约有90%以上的asic和fpga采用硬件描述语言进行设计。硬件描述语言hdl的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,急需一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期,vhdl和verilog hdl语言适应了这种趋势的要求,先后成为ieee标准。现在,随着系统级fpga以及系统芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像superlog、systemc、cynlib c++等等。究竟选择哪种语言进行设计,整个业界正在进行激烈的讨论。因此,完全有必要在这方面作一些比较研究,为eda设计做一些有意义的工作,也为发展我们未来的芯片设计技术打好基础。 1 目前hdl发展状况目前,硬件描述语言可谓是百花齐放,有vhdl、superlog、verilog、systemc、cynlib c++、c level等等。虽然各种语言各有所长,但业界对到底使用哪一种语言进行设计,却莫衷一是,难有定论。而比较一致的意见是,hdl和c/c++语言在设计流程中实现级和系统级都具有各自的用武之地。问题出现在系统级和实现级相连接的地方:什么时候将使用中的一种语言停下来,而开始使用另外一种语言?或者干脆就直接使用一种语言?现在看来得出结论仍为时过早。在2001年举行的国际hdl会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后,与会者投票表决:如果要启动一个芯片设计项目,他们愿意选择哪种方案?结果,仅有2票或3票赞成使用systemc、cynlib和c level 设计;而superlog和verilog各自获得了约20票。至于以后会是什么情况,连会议主持人john cooley也明确表示:“5年后,谁也不知道这个星球会发生什么事情。”各方人士各持己见:为verilog辩护者认为,开发一种新的设计语言是一种浪费;为systemc辩护者认为,系统级芯片soc快速增长的复杂性需要新的设计方法;c语言的赞扬者认为,verilog 是硬件设计的汇编语言,而编程的标准很快就会是高级语言,cynlib c++是最佳的选择,它速度快、代码精简;superlog的捍卫者认为,superlog是verilog的扩展,可以在整个设计流程中仅提供一种语言和一个仿真器,与现有的方法兼容,是一种进化,而不是一场革命。当然,以上所有的讨论都没有提及模拟设计。如果想设计带有模拟电路的芯片,硬件描述语言必须有模拟扩展部分,像verilog hdl-a,既要求能够描述门级开关级,又要求具有描述物理特性的能力。 2 几种代表性的hdl语言2.1 vhdl 早在1980年,因为美国军事工业需要描述电子系统的方法,美国国防部开始进行vhdl的开发。1987年,由ieee(institute of electrical and electro- nics engineers)将vhdl制定为标准。参考手册为ieee vhdl 语言参考手册标准草案1076/b版,于1987年批准,称为ieee 1076-1987。应当注意,起初vhdl只是作为系统规范的一个标准,而不是为设计而制定的。第二个版本是在1993年制定

VHDL语言程序设计中INOUT端口的使用与实例分析

目录 1、双向电路的基本格式 (2) 2、控制条件 (3) 2.1、双向信号作一个信号的输入,作另一信号的输出 (3) 2.2、双向信号既做输出又做输出 (4) 3、实例说明-INOUT端口仿真暨三态门仿真 (6) 3.1、三态门的原理与仿真三态总线 (6) 3.3、VHDL 的三态门实现与仿真 (7) 参考文献 (12)

VHDL语言程序设计中INOUT端口的使用与实例分析 摘要:VHDL是由美国国防部为描述电子电路所开发的一种语言,其全称为(Very High Speed Integrated Circuit) Hardware Description Language。与另外一门硬件描述语言Verilog HDL相比,VHDL 更善于描述高层的一些设计,包括系统级(算法、数据通路、控制)和行为级(寄存器传输级),而且VHDL 具有设计重用、大型设计能力、可读性强、易于编译等优点逐渐受到硬件设计者的青睐。但是,VHDL是一门语法相当严格的语言,易学性差,特别是对于刚开始接触VHDL的设计者而言,经常会因某些小细节处理不当导致综合无法通过。VHDL共定义了5种类型的端口,分别是In, Out,Inout, Buffer及Linkage,实际设计时只会用到前四种。本文主要讨论讨论如何正确使用INOUT端口。 关键词:VHDL;INOUT端口;三态门原理 1、双向电路的基本格式 工程应用中,双向电路是设计者不得不面对的问题.在实际应用中,数据总线往往是双向的.如何正确处理数据总线是进行时序逻辑电路设计的基础.在程序设计过程中,关键技术在于:实体部分必须对端口属性进行申明,端口属性必须为inout类型,在构造体需要对输出信号进行有条件的高阻控制.在双向电路的处理问题上,常用的处理方式有两种,在介绍双向电路的处理方式之前,先看看双向电路的基本格式: ENTITY bidir_pin IS ( bidir : INOUT std_logic; oe, clk, from_core : IN std_logic; to_core : OUT std_logic; …… END bidir_pin; ARCHITECTURE behavior OF bidir_pin IS BEGIN

硬件描述语言实验报告

《硬件描述语言》实验报告 学院: 学号: 姓名: 专业: 实验时间: 实验地点: 指导教师: 年月

实验一简单组合逻辑设计 一、实验目的及要求: 1.掌握基本组合逻辑电路的实现方法。 2.初步了解两种基本组合逻辑电路的生成方法。 3.学习测试模块的编写。 4.通过综合和布局布线了解不同层次仿真的物理意义。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤 1.实验内容: 本次实验采用Verilog HDL语言设计一个可综合的数据比较器,其功能是比较数据a与数据b的结果,如果两个数据相同,则输出结果1,否则给出结果0;并写出测试模型,使其进行比较全面的测试。 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的测试; (2)编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;(3)观察综合后生成的文件和源文件的不同点和相同点。 (4)综合时采用不同的FPGA器件,观察综合后的结果有什么不同。 四、实验结果与数据处理: 1.RTL图及仿真后波形图:

2.综合后的电路图: 五、分析与讨论: 1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial块有什么关系? 答:测试方法二中的第二个initial用来暂停仿真以便观察仿真波形,它与第一个initial是并行关系 2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?答:如果没有写#10000,仿真会直接停止,没有$stop,仿真不会结束。

3.比较两种测试方法,哪一种更全面? 答:第二种测试方法更全面,测试了更多种的变换的情况。 实验二简单分频时序逻辑电路的设计 一、实验目的及要求: 1.掌握条件语句在简单时序模块设计中的使用; 2.掌握verilog语句在简单时序模块设计中的使用; 3.学习在Verilog模块中应用计数器; 4.学习测试模块的编写、综合和不同层次的仿真。 二、实验设备及要求 装有modesim和synplify的电脑一台 三、实验内容与步骤: 1.实验内容: (1)使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。得到如下波形图: (2)对模块进行RTL级仿真、综合后门级仿真,布局布线仿真; 2.实验步骤: (1)建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。 (2)编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。得到波形图。 (3)观察综合后生成的文件和源文件的不同点和相同点。

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