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

合集下载

FPGA实验指导书

FPGA实验指导书

FPGA实验指导书——DE2开发板使用实验昆明理工大学实验一 DE2的顶层默认程序这个实验为用户提供连接分配和顶层Verilog模块,这个模块也是这本手册所有其他实验的基础性模块。

这个实验产生的编程文件是DE2开发板在出货时作为默认载入开发板的编程文件。

本实验将介绍如何编译工程并把生成的编程文件下载到DE2开发板中。

启动开发板(1)将USB线和电源连接到DE2板上。

(2)按下电源开关,这时电源指示灯会被点亮。

(3)你将看到以下现象:●所有的LED灯都闪烁。

●所有七段数码管从0到F循环显示。

●液晶屏显示“Welcome to the Altera DE2 Board”。

●在VGA显示器上显示欢迎信息。

●将开关SW17置OFF,从LINEOUT插座输出1khz正弦波的声音;将开关SW17置ON并将一个MP3播放器的输出接到DE2板的LINE—IN端口,可从耳机里听到MP3播放的音乐。

●若将麦克风接到DE2板的MIC端口上,这样用户的声音可与MP3播放器混合。

Cyclone II中的顶层verilog模块这部分将介绍一个Quartus II工程中所需要的所有组件。

它将让你了解如何使用Quartus II将代码转换成数据流下载的整个设计流程。

按照以下步骤进行:(1)打开Quartus II 软件。

(2)点击File→Open Project ,如图1.1。

(3)在D:\DE2_System_v1.5\DE2_demonstrations\DE2_Default目录下选中DE2_Default.qpf工程文件打开。

(4)在“Project Navigator”工程导航区可查看该工程的层次、包含的所有文件、设计单元等信息。

其中“File”下列出了整个工程包含的所有文件。

双击顶层设计文件DE2_Default.v,可以看到文件的内容和I/O口的声明。

在对每个引脚声明时加上了详细的注释,以便用户更好的明白每个引脚的功能。

FPGA实验指导书(1)

FPGA实验指导书(1)

实验一组合逻辑3-8译码器的设计 .................... 错误!未定义书签。

实验二基于FPGA的数字钟的设计 ................... 错误!未定义书签。

实验三基于NIOS的交通灯实验 .......................... 错误!未定义书签。

实验四静态图像显示 ............................................. 错误!未定义书签。

实验一组合逻辑3-8译码器的设计一、实验目的:1、通过3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。

2、掌握组合逻辑电路的静态测试方法。

3、初步了解可编程器件设计的全过程。

二、实验步骤:1、打开QuartusII软件。

2、选择路径。

选择File/New Project Wizard,指定工作目录,指定工程和顶层设计实体称;注意:工作目录名不能有中文。

3、添加设计文件。

将设计文件加入工程中。

单击“Next”,如果有已经建立好的VHDL 或者原理图等文件可以在File name中选择路径然后添加,或者选择Add All添加所有可以添加的设计文件(.VHDL ,.Verilog原理图等)。

如果没有直接点击“Next”,等建立好工程后再添加也可,这里我们暂不添加。

4、选择FPGA器件。

Family选择Cyclone II,Available device选EP2C35F484C8,Packge选择Any,Pin Count 选择484,Speed grade选择Any;点击“Next”。

5、选择外部综合器、仿真器和时序分析器。

Quartus II支持外部工具,可通过选中来指定工具的路径。

这里我们不做选择,默认使用Quartus II自带的工具。

6、结束设置。

单击“Next”,弹出“工程设置统计”窗口,上面列出了工程的相关设置情况。

最后单击“Finish”,结束工程设置。

7、建立原理图文件。

集成电路设计硬件描述语言实验指导书

集成电路设计硬件描述语言实验指导书

集成电路设计硬件描述语言实验指导书实验一Verilog HDL程序结构与ModelSim、Quartus II软件的使用一、实验目的初步掌握Verilog HDL程序基本结构,编制简单的Verilog程序,掌握ModelSim、Quartus II软件的使用,掌握用Quartus II软件对Verilog程序进行编译仿真下载的基本方法。

二、实验内容1、编写Verilog程序描述一个电路,实现以下功能:该电路具有一个输入端口a,一个输出端口b,电路的作用是把输入到a的信号传送给b。

2、编写Verilog程序描述一个电路,实现以下功能:该电路具有两个输入端口a,b一个输出端口c,电路的作用是:c的输出是a 和b的“与”。

三、实验步骤1、编写Verilog程序,两个文件名分别为ex1.v和ex2.v,使用ModelSim的force命令进行仿真。

2、编写测试平台(testbench),对程序进行仿真。

3、启动Quartus II软件,建立工程(第一个工程名为ex1,顶层文件名为ex1.v;第二个工程名为ex2,顶层文件名为ex2.v)。

器件选择Cyclone系列中的EP1C3T144C8。

4、编写Verilog程序,存盘编译。

5、通过编译后,建立波形文件,设置仿真输入信号,存盘。

6、进行仿真,分析结果。

7、进行引脚锁定,重新编译。

对于ex1:a 对应引脚号1(PIO0)b 对应引脚号11(PIO8)对于ex2:a 对应引脚号1(PIO0)b 对应引脚号2(PIO1)c 对应引脚号11(PIO8)8、下载到EDA实验系统上的FPGA中,进行实际测试。

选用实验电路结构图NO.5。

四、实验报告要求实验目的,实验内容,设计的Verilog程序,实验结果,结果分析,心得与体会。

实验二异步清零十进制计数器的设计一、实验目的熟悉时序逻辑电路Verilog程序的设计,掌握计数器的设计方法。

二、实验内容编写Verilog程序描述一个电路,实现以下功能:具有2个输入端口clk和clr,clk输入时钟信号,clr起异步清零作用,‘1’有效,两个输出端口,c和q,q的位宽为4,输出计数值,从0到9,c的位宽为1,每当q为9时输出一个高电平脉冲。

《FPGA设计与应用》实验指导书全(Verilog版)

《FPGA设计与应用》实验指导书全(Verilog版)

《FPGA设计与应用》实验指导书熊利祥编武汉理工大学华夏学院2011年9月前言一、实验课目的数字电路与系统设计实验课是电子工程类专业教学中重要的实践环节,包括了ISE开发环境基本操作及FPGA的基本原理、基带传输系统的设计、Uart串口控制器电路的设计、PS/2接口的设计、VGA显示接口设计。

要求学生通过实验学会正确使用EDA技术,掌握FPGA器件的开发,熟练使用ISE开发环境,掌握Verilog语言的编程,掌握数字电路和系统的设计。

通过实验,使学生加深对课堂专业教学内容的理解,培养学生理论联系实际的能力,实事求是,严谨的科学作风,使学生通过实验结果,利用所学的理论去分析研究EDA技术。

培养学生使用Basys 2开发板的能力以及运用实验方法解决实际问题的能力。

二、实验要求:1.课前预习①认真阅读实验指导书,了解实验内容;②认真阅读有关实验的理论知识;③读懂程序代码。

2.实验过程①按时到达实验室;②认真听取老师对实验内容及实验要求的讲解;③认真进行实验的每一步,观察程序代码与仿真结果是否相符;④将实验过程中程序代码和仿真结果提交给老师审查;⑤做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。

3.实验报告①按要求认真填写实验报告书;②认真分析实验结果;③按时将实验报告交给老师批阅。

三、实验学生守则1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西;2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件;3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线;4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。

目录实验一Uart通用串口接口的设计 (4)实验二PS/2接口的设计 (28)实验三VGA显示接口设计 (30)附录一 basys 2开发板资料 (36)实验一 Uart串口控制接口电路的设计一、实验目的1.掌握分频模块的设计方法。

FPGA与硬件描述语言实验任务书3

FPGA与硬件描述语言实验任务书3
3.掌握IF-ELSE语句和CASE语句进行组合电路的设计方法。
二、实验内容:
1.设计一个3-8线译码器电路,电路的真值表如下表所示:
输入
输出
a2
a1
a0
y7
y6
y5
y4
y3
y2
y1
y0
0
0
0
1
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
1
0
1
0
1
0
1
1
1
1
1
0
1
1
0
1
1
1
1
1
1
0
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
1.软件环境:Quartus II 12.0,Modelsim 10.1c
2.编程语言:VHDL
3.硬件环境:百科融创FPGA实验箱,FPGA为Altera公司CycloneIII系列EP3C16Q240C8
2017年5月
1
1
1
0
1
1
1
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
2.分别用IF-ELSE语句和CASE语句设计3-8线译码器电路;
3.比较用IF-ELSE语句和CASE语句设计的译码器综合结果是否有区别;

可编程逻辑器件FPGA实验指导书

可编程逻辑器件FPGA实验指导书

可编程逻辑器件(FPGA)实验指导书北京航空航天大学电工电子中心2014-10-22目录一、可编程逻辑器件概述 (1)1.1可编程逻辑器件发展及应用意义 (1)1.2可编程逻辑器件FPGA/CPLD结构简介 (1)二、可编程逻辑器件应用实质和编程原则 (6)2.1选择可编程逻辑器件的实质(或目的或目标) (6)2.2可编程逻辑器件设计流程 (6)2.3硬件描述语言分类 (8)三、VHDL程序设计基本结构 (9)3.1实体(ENTITY) (9)3.2结构体(ARCHITECTURE) (11)3.3子程序(FUNCTION PROCEDURE) (12)3.4集合包(PACKAGE) (13)3.5库(LIBRARY) (14)3.6配置(CONGIFURATION) (15)四、VHDL语法和语句简介 (16)4.1数据类型 (16)1、标准数据类型 (16)2、标准逻辑类型 (16)3、用户自定义数据类型 (16)4.2VHDL语言运算符 (17)1、基本运算符 (17)2、关系运算符 (17)3、算术运算符 (17)4、其他运算符 (18)4.3赋值语句 (18)4.4 IF语句 (19)4.5 CASE语句 (20)4.6进程(PROCESS)语句 (21)4.7并行过程调用语句CONCURRENT PROCEDURE CALLS STATEMENT (23)1、并行信号赋值语句 (23)2、条件信号赋值语句 (23)3、选择信号赋值语句 (24)4.8元件例化语句 COMPONENT I NSTANTIATIONS (24)4.9 LOOP语句 (26)4.10跳出循环语句(NEXT、EXIT语句) (27)4.11 RETURN语句 (27)4.12 NULL语句 (28)五、状态机 (29)5.1、状态机类型定义语句 (29)5.2时序电路时钟的表述方法 (31)六、实验篇 (33)6.1、门电路系列实验(任选一个实验) (36)6.2、组合逻辑系列实验(任选一个实验) (36)6.3、触发器系列实验(任选一个实验,规则自已分析确定) (36)6.4、时序逻辑系列实验(任选一个实验,规则自已分析确定) (36)6.5、存储器设计系列实验(任选一个实验,规则自已分析确定) (37)6.6、状态机逻辑系列实验(任选一个实验) (37)6.7、综合系统逻辑系列实验(任选一个实验,规则自已分析确定) (37)七、FPGA实验平台简介 (38)7.1、A LTERA FPGA EP1C6Q240特性 (38)1、Cyclone系列器件特性 (38)2、Cyclone系列器件可选封装和I/O引脚数 (39)3、Cyclone 系列器件I/O Banks布局图 (39)4、Cyclone device IOEs 支持标准接口 (39)5、Cyclone FPGA EP1C6Q240器件特点 (40)6、Cyclone EP1C6(12)Q模块分布图 (40)7、Cyclone EP1C6Q资源分配 (40)8、Cyclone EP1C6240C8引脚布局图 (41)7.2、实验平台硬件接口电路功能 (45)1、电源单元 (46)2、输入单元 (46)3、输出单元 (46)4、接口单元 (47)5、扩展单元 (47)7.3、输入有源信号 (47)1、电源 (47)2、逻辑电平输入信号——8bit DIP 开关×3 (47)3、单脉冲输入信号 (48)4、连续脉冲输入信号 (49)5、4X4键盘输入信号 (50)7.4、显示方式(供输出信号选择不同显示效果) (51)1、LED显示方式 (51)2、七段数码管显示方式 (52)3、米字型数码管显示方式 (53)4、8X8点阵显示方式 (54)5、LCD显示方式 (55)7.5、实验平台FPGA EP1C6Q240C8引脚与负载区各接口电路之间对应关系 (56)7.6、集成开发环境使用 (57)1、文本编辑源程序文件步骤 (58)2、原理图和图表模块编辑步骤 (83)3、混合编辑(自底向上)步骤 (103)4、混合编辑(自顶向下)步骤 (103)一、可编程逻辑器件概述1.1可编程逻辑器件发展及应用意义可编程逻辑器件发展--从PROM(Programmable Read Only Memory)、PLA(Programmable Logic Array)、PAL(Programmable Array Logic)、可重复编程的GAL(Generic Array Logic)、到采用大规模集成电路技术的EPLD(Erasable Programmable Logic Device),直到CPLD(Complex Programmable Logic Device)和FPGA(Field Programmable Gate Array)。

计算机组成原理FPGA实验指导书

计算机组成原理FPGA实验指导书

计算机组成原理FPGA实验指导书《计算机组成原理》实验指导书计算机科学与技术学院⽬录实验⼀熟悉实验平台 (3)实验⼆总线传送 (10)实验三运算器的设计与调试 (14)实验四存贮器的设计与调试 (20)实验五控制器的设计与调试 (26)附录常⽤器件简介 (30)实验⼀熟悉实验平台⼀.实验⽬的1.熟悉使⽤Verilog硬件描述语⾔2.熟悉ISE开发环境3.掌握实验箱组成4.熟悉时序发⽣器的组成原理;5.掌握数字逻辑器件Verilog语⾔的编写;⼆.实验设备1.装有ISE10.1的PC机⼀台2.EDK-3SAISE实验箱⼀台三.实验内容1.节拍信号T1—T4波形如图-1所⽰图-1 节拍时序波形图每个节拍内均包含脉冲clk_m1。

节拍信号有三种⼯作⽅式。

这三种⼯作⽅式时标信号的启动,停⽌受Button,Rstn按钮开关控制。

2.⽤Verilog语⾔实现时序代码如下:module Timeen(input Clk, //System Clock 40Mhzinput Button, // setep clockinput Rstn, // reset, low activeinput Clk_sel, // sequence timing or step timing select input Clk_sel1, output [4:1] t, // Display(T1-T4)output M1);wire Clk_m1;wire Clk_i,Clk_ii;wire PB_R;assign M1=Clk_m1;GenClk_i Clk_i_Module (.Clk_s(Clk),.Clk_i(Clk_i),.Rstn(Rstn));GenClk_ii Clk_ii_Module (.PB_R(PB_R),.Clk(Clk),.Clk_ii(Clk_ii));Debouncer Debouner_Module (.Clk_s(Clk),.PB(Button),.PB_state(),.PB_up(PB_R),.PB_down());ClkSel ClkSel_Module (.Clk_s(Clk),.Clk_i(Clk_i),.Clk_ii(Clk_ii),.Clk_m1(Clk_m1),.Clk_sel(Clk_sel),.Clk_sel1(Clk_sel1));Bit1_Display Bit1_Display_Module (.Clk_s(Clk),.Clk_m1(Clk_m1),.T(t),.Rstn(Rstn),.Clk_i(Clk_i));endmodulemodule GenClk_i(input Clk_s,output Clk_i,input Rstn);reg [24:0] Cnt;assign Clk_i= Cnt[24];always@(posedge Clk_s or negedge Rstn) beginif (!Rstn)Cnt<=0;elseCnt <= Cnt + 1;endendmodulemodule GenClk_ii(input PB_R,input Clk,output Clk_ii);reg Clk_o,Clk_o1,Clk_o2;assign Clk_ii=Clk_o2;always@(posedge Clk )beginClk_o<=PB_R;Clk_o1<=Clk_o;Clk_o2<=Clk_o1;endendmodulemodule Debouncer(Clk_s, PB, PB_state, PB_up, PB_down);input Clk_s; // "clk" 时钟信号input PB; // "PB" 有⽑刺的、异步的、低有效的按键信号output PB_state; // 当按键被按下时输出1output PB_down; // 按键被按下的瞬间输出⼀个⾼电平脉冲output PB_up; // 按键被松开的瞬间输出⼀个⾼电平脉冲// ⾸先使⽤两个触发器来同步PB信号reg PB_sync_0;always @(posedge Clk_s)PB_sync_0 <= ~PB; // 翻转PB,使之⾼有效reg PB_sync_1;always @(posedge Clk_s) PB_sync_1 <= PB_sync_0;// 声明⼀个16位的剖?reg [21:0] PB_cnt;// 当按键被按下或松开时,计数?// 当计数器计数溢出时,便认为按键的状态确定。

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

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

实验一用硬件描述语言的方法设计一个4位加法器一、实验目的1、掌握4位加法器的功能和设计方法;2、掌握用硬件描述语言的方法设计组合逻辑电路——4位加法器。

二、实验器材1、台式计算机 1台2、可编程逻辑逻辑器件实验软件1套3、下载电缆一套4、示波器一台三、实验说明1、台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。

2、可编程逻辑逻辑器件实验软件向硬件描述语言的编写提供平台,并将调试好的程序下载到可编程逻辑逻辑器件中。

3、下载电缆是可编程逻辑器件软件和可编程逻辑逻辑器件之间的接口电缆,为了便于区别,用不同颜色导线区分下载电缆的电源、地和信号,一般用红色导线接电源,用黑色导线接地。

4、示波器用于观察可编程逻辑逻辑器件执行程序时输出信号的变化四、实验内容和步骤1、设计一个4 位的全加器,其框图如图4-1所示。

图中的“进位入”Ci-1指的是低位的进位输出,“进位出”Ci即是本位的进位输出。

(被加数)Bi(3..0)(被加数)Ai(3..0) (进位入)C i-1(全加和)Si(3..0)(进位出)Ci图1-1 4位全加器原理图2、全加器的9个输入所对应的管脚同9位拨码开关相连,9个输入管脚是a0~a3、b0~b3和C i-1,a0~a3、b0~b3代表两个4位二进制数,cin代表进位位;5个输出所对应的管脚同5位发光二极管相连,5个输出管脚是si0~si3和ci,si0~si3代表相加结果,Ci代表进位位。

3、将设计好的逻辑功能转为硬件描述语言的描写4、将设计好的硬件描述语言进行仿真5、将仿真好的硬件描述语言下载到可编程逻辑逻辑器件中五、实验报告要求1、整理实验结果,填写实验报告。

2、小结实验心得体会。

3、回答思考题什么叫全加器,它的作用是什么? 4位加法器和全加器的区别和联系是什么?实验二用硬件描述语言的方法设计一个分频器一、实验目的1、掌握各种分频器的设计思路2、掌握用硬件描述语言的方法设计各种分频器二、实验器材1、台式计算机 1台2、可编程逻辑逻辑器件实验软件1套3、下载电缆一套4、示波器一台三、实验说明1、台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《硬件描述语言与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);output equal;assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,//equal输出为0。

endmodule测试模块源代码:`timescale 1ns/1ns`include "./compare.v"module comparetest;reg a,b;wire equal;initialbegina=0;b=0;#100 a=0; b=1;#100 a=1; b=1;#100 a=1; b=0;#100 $stop;endcompare compare1(.equal(equal),.a(a),.b(b));endmodule仿真波形如下:五、实验步骤1.建立工程文件,编写模块源码和测试模块,要求测试模块对源文件进行比较全面的2.编译源码和测试模块,用测试模块对源文件进行测试,并进行仿真;3.观察综合后生成的文件和源文件的不同点和相同点。

4. 综合时采用不同的FPGA器件,观察综合后的结果有什么不同。

六、实验报告要求1.要求实验报告中有编写模块源码和测试模块;2.要求实验报告中有综合后RTL图形;3.要求实验报告中有仿真后的波形;4. 对课后思考题进行分析说明。

七、实验注意事项1.采用Altera公司的Cyclone II系列的EP2C35型FPGA作为建立工程、代码编译、综合库时使用的库器件;2.综合使用synplify工具,布局布线使用quartus II自带工具;3.仿真使用ModelSim工具。

八、思考题1.课本练习一的测试方法二中,第二个initial块有什么用?它与第一个initial 块有什么关系?2.如果在第二个initial块中,没有写出#10000或者$stop,仿真会如何进行?3.比较两种测试方法,哪一种更全面?实验二简单分频时序逻辑电路的设计一、实验目的1.掌握条件语句在简单时序模块设计中的使用;2. 掌握verilog语句在简单时序模块设计中的使用;3.学习在Verilog模块中应用计数器;4.学习测试模块的编写、综合和不同层次的仿真。

二、实验内容1.使用always块和@(posedge clk)或@(negedge clk)的结构来表述时序逻辑,设计1/2分频的可综合模型。

得到如下波形图:2.对模块进行RTL级仿真、综合后门级仿真,布局布线仿真;三、实验仪器、设备预装了开发工具synplify、ModelSimSE的PC机。

四、实验原理1.使用always过程赋值语句对上升沿进行响应,当时钟信号上升沿到来时,系统判断清零信号是否为0,如果为0,则clk_out信号清零,否则clk_out信号翻转clk_out=~clk_out。

2.系统1/2分频原理:一个时钟周期的上升沿时刻,若清零信号reset不为0,输出信号跳变一个周期,输入时钟信号需经过两个周期的上升沿,输出周期为输入周期的两倍,输出频率为输入频率的1/2,这样就完成了1/2分频的效果。

下面是一个可综合的1/2分频器模型。

//half_clk.v---------------------------------------module half_clk(reset,clk_in,clk_out);input clk_in,reset;output clk_out;reg clk_out;always @(posedge clk_in)beginif(!reset) clk_out=0;elseclk_out=~clk_out;endendmodule3.测试模块中,输入周期为200ns的时钟信号,初始化语句initial将时钟信号置0,清零信号先置1,经过10ns置0,开始清零,再经过110ns后置1,开始测试。

设定测试循环时间为100ms,经过100ms以后测试停止。

测试模块的源代码://top.v--------------------------------------------`timescale 1ns/100ps`define clk_cycle 50module top;reg clk,reset;wire clk_out;always #`clk_cycle clk=~clk;initialbeginclk=0;reset=1;#10 reset=0;#110 reset=1;#100000 $stop;endhalf_clk m0(.reset(reset),.clk_in(clk),.clk_out(clk_out));endmodule五、实验步骤1.建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试。

2.编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真。

得到波形图。

3.观察综合后生成的文件和源文件的不同点和相同点。

4.记录数据并完成实验报告。

六、实验报告要求1.要求实验报告中有编写模块源码和测试模块。

2.要求实验报告中有仿真后的波形。

3.实验报告中对思考题进行分析说明。

七、实验注意事项1.注意在always块中,被赋值的信号都必须定义为reg型,这是由时序逻辑电路的特点所决定的。

2.对与reg型数据,如果未对它进行赋值,仿真工具会默认它为不定态。

八、思考题1.如果没有reset信号,能否控制2分频clk_out信号的相位?2.只用clk时钟沿的触发(即不用2分频产生的时钟沿)如何直接产生4分频、8分频、或者16分频的时钟?3.如何只用clk时钟沿的触发直接产生占空比不同的分频时钟?实验三利用条件语句实现计数分频时序电路一.实验目的:1.掌握条件语句在简单时序模块设计中的使用;2.掌握最基本时序电路的实现方法;3.学习在Verilog模块中应用计数器;4. 学习测试模块的编写、综合和不同层次的仿真。

二.实验内容:1.复习课本,熟悉条件语句的使用方式;2.建立工程并编写源代码;3. 综合并布局布线仿真并分析always语句在时序逻辑中的作用;4. 学习测试模块的编写、综合和仿真。

图3.1 技术分频器波形三.实验设备:预装了Active-HDL6.2及Synplify7.0的PC机。

四、实验原理1.复位信号reset为低电平时,对电路中的寄存器进行复位,F输出低电平信号。

利用分频器的设计原理,在程序中设计一个计数器,在时钟的上升沿计数,当计数值为19时(此时时钟已经产生了20个上升沿),输出信号F翻转为高电平,高电平的持续时间为10us。

之后,复位信号再次将F复位为低电平,低电平的持续时间为10us。

2.条件语句示例:可综合风格的分频器。

它的功能是将10M的时钟分频为500K的时钟。

基本原理与1/2分频器是一样的,但是需要定义一个计数器,以便准确获得1/20分频。

模块源代码:// --------------- fdivision.v -----------------------------module fdivision(RESET,F10M,F500K);input F10M,RESET;output F500K;reg F500K;reg [7:0]j;always @(posedge F10M)if(!RESET) //低电平复位。

beginF500K <= 0;j <= 0;endelsebeginif(j==19) //对计数器进行判断,以确定F500K信号是否反转。

beginj <= 0;F500K <= ~F500K;endelsej <= j+1;endendmodule测试模块源代码:--------------fdivision_top.v---------------`timescale 1ns/100ps`define clk_cycle 50module division_top;reg F10M,RESET;wire F500K_clk;always #`clk_cycle F10M=~F10M;initialbeginRESET=1;F10M=0;#100 RESET=0;#100 RESET=1;#10000 $stop;endfdivision fdivision(.RESET(RESET),.F10M(F10M),.F500K(F500K_clk));endmodule五、实验步骤1.建立工程文件,编写模块源码和测试模块,要求测试模块能对源文件进行比较全面的测试;2.编译源码和测试模块,用测试模块对源文件进行测试,并综合仿真;3.观察综合后生成的文件和源文件的不同点和相同点;4. 综合时采用不同的FPGA器件,如Altera公司的Cyclone II系列和Stratix III系列,观察综合后的结果有什么不同。

相关文档
最新文档