硬件描述语言与FPGA技术实验指导书(2012版)汇总
课程名称FPGA与硬件描述语言

课程名称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描述⽅法。
硬件描述语言实验

《硬件描述语言》实验指导书南通大学电子信息学院2008 年2 月1、目的和任务《硬件描述语言》是一门侧重于数字电子系统的设计和测试方法的课程,它的上机实验是教学中的一个重要环节。
通过上机学习,学生不仅可以系统地复习、巩固该课程的基本理论,而且培养学生解决问题能力和创新能力,同时为该课程的课程设计作准备。
2、教学基本要求(1)、熟练使用EDA 软件(Quartus II、ModelSim);(2)、掌握用Verilog HDL 实现组合逻辑电路和时序逻辑电路的方法。
3、实验条件(1)、PC 机、Quartus Ⅱ软件和ModelSim软件(2)、GW48型EDA 实验开发系统(EP1K30TC144-3)4、实验内容序号实验内容1 实验一设计工具的使用2 实验二组合逻辑电路设计(一)3 实验三组合逻辑电路设计(二)4 实验四总线与总线操作5 实验五时序逻辑电路设计(一)6 实验六时序逻辑电路设计(二)5、实验成绩实验成绩的评定由实验的验收等级和实验报告等级两个部分组成,各占50%。
实验的验收等级和实验报告等级均采用5 个等级,即优、良、中、及格和不及格。
实验成绩占本课程平时成绩的50%。
实验一设计工具的使用1、实验目的与要求掌握在Quartus Ⅱ开发环境下,运用硬件描述语言输入法对“三人表决器”进行设计输入、编译、调试和仿真的方法。
“三人表决器”电路的输入为SW1、SW2 和SW3,输出为L3 和L4,位宽均为1 位。
当SW1、SW2 和SW3中有超过2个以上的输入为1时,要求熟悉整个设计流程,从打开、建立文档、编辑、编译、建立激励信号波形及最后仿真的整个过程。
2、实验内容(1)在Quartus Ⅱ开发环境下,建立工程,并将三人表决器的硬件描述语言程序输入;(2)完成编译、调试和仿真,分析实验仿真结果,并判断其正确性。
3、教学形式(1)本实验为验证型实验,学生在实验前预习实验指导书;(2)指导教师应该在实验前阐述实验目的、内容、方法和步骤,并且就实验中的难点和注意事项进行一定的说明;(3)实验结束之后,学生按照实验报告的书写格式自行完成实验报告。
FPGA实验指导书

目录第1章FPGA系统 (1)1.1 系统简介 (1)1.2 系统功能特点 (1)1.3 开发平台标准配置 (2)1.4 功能模块介绍 (2)1.4.1 电源 (2)1.4.2 系统时钟 (3)1.4.3 LED灯 (3)1.4.4 8位拨码开关 (3)1.4.5 数码管显示 (4)1.4.6 键盘阵列 (5)1.4.7 独立矩形波信号源 (5)1.4.8 蜂鸣器 (6)第2章基础门电路及触发器 (8)2.1 实验一基本门电路 (8)2.1.1 实验目的 (8)2.1.2 实验内容 (8)2.1.3 实验原理及说明 (8)2.1.4 实验步骤 (8)2.1.5 参考程序及引脚分配 (9)2.2 实验二基本触发器 (10)2.2.1 实验目的 (10)2.2.2 实验内容 (10)2.2.3 实验原理及说明 (10)2.2.4 实验步骤 (10)2.2.5 参考程序及引脚分配 (11)2.3 实验三3-8译码器 (13)2.3.1 实验目的 (13)2.3.2 实验内容 (13)2.3.3 实验原理 (13)2.3.4 实验步骤 (13)2.3.5 参考程序及引脚分配 (14)2.4 实验四8—3编码器 (15)2.4.1 实验目的 (15)2.4.2 实验内容 (15)2.4.3 实验原理 (15)2.4.4 实验步骤 (15)2.4.5 参考程序及引脚分配 (16)2.5 实验五BCD八段显示译码器 (17)2.5.1 实验目的 (17)2.5.2 实验内容 (17)2.5.4 实验步骤 (17)2.5.5 参考程序及引脚分配 (17)2.6 实验六四选一数据选择器 (19)2.6.1 实验目的 (19)2.6.2 实验内容 (19)2.6.3 实验原理及说明 (19)2.6.4 实验步骤 (19)2.6.5 实验参考程序及引脚分配: (20)2.7 实验七数值比较器 (21)2.7.1 实验目的 (21)2.7.2 实验内容 (21)2.7.3 实验原理及说明 (21)2.7.4 实验步骤 (21)2.7.5 参考程序及引脚分配 (22)2.8 实验八4位二进制加法器 (23)2.8.1 实验目的 (23)2.8.2 实验内容 (23)2.8.3 实验原理及说明 (23)2.8.4 实验步骤 (24)2.8.5 参考程序及引脚分配 (24)2.9 实验九4位二进制乘法器 (26)2.9.1 实验目的 (26)2.9.2 实验内容 (26)2.9.3 实验原理及说明 (26)2.9.4 实验步骤 (27)2.9.5 参考程序及引脚分配 (27)第3章逻辑电路 (31)3.1 实验十移位寄存器 (31)3.1.1 实验目的 (31)3.1.2 实验内容 (31)3.1.3 实验原理 (31)3.1.4 实验步骤 (31)3.1.5 参考程序及引脚分配 (31)3.2 实验十一串行并行转换 (33)3.2.1 实验目的 (33)3.2.2 实验内容 (33)3.2.3 实验原理及说明 (33)3.2.4 实验步骤 (34)3.2.5 参考程序及引脚分配 (34)3.3 实验十二单时钟同步可逆计数器 (35)3.3.1 实验目的 (35)3.3.2 实验内容 (35)3.3.3 实验原理及说明 (36)3.3.5 参考程序及引脚分配 (36)3.4 实验十三顺序脉冲发生及其检测 (38)3.4.1 实验目的 (38)3.4.2 实验内容 (38)3.4.3 实验原理及说明 (38)3.4.4 实验步骤 (39)3.4.5 参考程序及引脚分配 (39)3.5 实验十四按键数码管循环左移显示 (41)3.5.1 实验目的 (41)3.5.2 实验内容 (41)3.5.3 实验原理 (41)3.5.4 实验步骤 (42)3.5.5 参考程序和引脚分配 (42)3.6 实验十五电子时钟 (45)3.6.1 实验目的 (45)3.6.2 实验内容 (45)3.6.3 实验原理 (46)3.6.4 实验步骤 (46)3.6.5 参考程序及引脚分配 (46)3.7 实验十六按键控制 (52)3.7.1 实验目的 (52)3.7.2 实验内容 (52)3.7.3 实验原理 (52)3.7.4 实验步骤 (53)3.7.5 参考程序及引脚分配 (53)第4章FPGA综合应用 (60)4.1 实验十七数字密码锁 (60)4.1.1 实验目的 (60)4.1.2 实验内容 (60)4.1.3 实验原理 (60)4.1.4 实验步骤 (61)4.1.5 参考程序及引脚分配 (61)4.2 实验十八智力抢答器 (66)4.2.1 实验目的 (66)4.2.2 实验内容 (66)4.2.3 实验原理及说明 (66)4.2.4 实验步骤 (67)4.2.5 参考程序及引脚分配 (68)4.3 实验十九自动售货机 (74)4.3.1 实验目的 (74)4.3.2 实验内容 (74)4.3.3 实验原理 (74)4.3.4 实验步骤 (75)4.3.5 参考程序和引脚分配 (75)4.4 实验二十数字频率计 (80)4.4.1 实验目的 (80)4.4.2 实验内容 (80)4.4.3 实验原理 (80)4.4.4 实验步骤 (81)4.4.5 参考程序及引脚分配 (81)第1章 FPGA系统1.1系统简介FPGA系统教学开发平台采用国际著名可编程逻辑器件公司Altera 的Cyclone系列5万门芯片为核心,整个平台采用模块化设计,各种模块可以自由组合,同时提供丰富的扩展接口,非常适合于FPGA初学者。
电子设计中的硬件描述语言与FPGA设计研究与应用

基于SystemC的嵌入式系统设计
总结词
探讨了基于SystemC的嵌入式系统设计的优势和应用场景,包括系统建模、仿真验证、硬件实现等。
详细描述
在嵌入式系统设计中,使用SystemC语言进行系统建模和仿真验证,可以大大提高设计效率和准确性。通过 SystemC的硬件描述和仿真功能,可以方便地进行系统级验证和调试。最后将设计实现到FPGA上,完成整个嵌 入式系统的设计和验证。
感谢您的观看
THANKS
Verilog:Verilog是另一种广泛使用的硬件描述语言,它具有简洁的语法和强Verilog:SystemVerilog是Verilog的扩展,增加了面向对象的设计方法和更强 的验证功能,广泛应用于IC设计和验证。
硬件描述语言在电子设计中的重要性
硬件描述语言定义
硬件描述语言(HDL)是一种用于描 述数字电路和系统的语言,它使用文 本形式来描述电路的结构和行为。
HDL通过高级抽象的方式,将电路设 计中的细节进行抽象,使得设计者能 够更加关注于电路的功能和结构,而 不是具体的实现细节。
常见硬件描述语言
VHDL(VHSIC Hardware Description Language):VHDL是最早的硬件描述语言 之一,被广泛应用于数字电路设计和FPGA开发。
寄存器传输级描述
寄存器传输级描述是一种更具体的描述方式 ,它关注电路中寄存器和信号的传输。
它使用更低级别的语言来描述电路的细节, 例如使用Verilog或VHDL的组合逻辑和时序 逻辑模块进行描述。
寄存器传输级描述可以用于生成测试平台和 验证电路的功能正确性。
物理级描述
01
物理级描述是一种最具体的描述方式,它关注电路的物理 实现和布局。
FPGA实验指导书

FPGA实验指导书刘敬猛编北京航空航天大学电工电子中心2009年10月前言现场可编程门门阵列(FPGA,Field Programmable Gate Array)的出现是超大规模集成电路(VLSI)技术和计算机辅助设计(CAD)技术发展的结果。
FPGA器件集成度高、体积小,具有通过用户编程实现专门应用的功能。
它也许电路设计者利用基于计算机的开发平台,经过设计输入、仿真、测试和校验,直到达到预期的结果。
使用FPGA器件可以将原来的电路板级产品集成为芯片级产品,从而降低了功耗,提高了可靠性,同时还可以很方便地对设计进行在线修改。
FPGA器件成为研制开发的理想器件,特别适合于产品的样机开发和小批量生产,因此有时人们也把FPGA称为可编程的ASIC。
本书的作者在工程实践和科学研究中深切感受到FPGA技术是数字电路设计的利器,从中受益颇深。
Cyclone FPGA是目前ASIC应用的低成本替代方案。
作为系统设计人员,您面临很多挑战,包括越来越大的成本压力和越来越复杂的设计,新出现的标准,以及越来越短的设计周期等。
ASIC 开发涉及到大量的工程资源,设计仿真和验证,需要进行多次重制。
利用其系统级集成功能,Cyclone FPGA系列避免了ASIC昂贵的NRE负担,降低了订购量和产品推迟带来的风险。
采用Cyclone FPGA系列,您的大批量应用现在可以采用价格相当的可编程解决方案(与ASIC相比)。
新的市场发展趋势,例如世界标准、平台融合、交互性以及技术改进等,不断推动了对高性价比方案的需求。
Cyclone系列FPGA的价格和功能满足了市场对创新的需求,通过产品迅速面市来确定领先优势。
消费类、通信、计算机外设、工业和汽车等低成本大批量应用市场都可以使用Cyclone FPGA。
Cyclone器件的性能足以和业界最快的FPGA进行竞争。
Cyclone FPGA综合考虑了逻辑、存储器、锁相环(PLL)和高级I/O接口,是价格敏感应用的最佳选择。
FPGA与硬件描述语言实验任务书3

二、实验内容:
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实验指导书《计算机组成原理》实验指导书计算机科学与技术学院⽬录实验⼀熟悉实验平台 (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;// 当按键被按下或松开时,计数?// 当计数器计数溢出时,便认为按键的状态确定。
教学课件 硬件描述语言与FPGA设计技术(肖闽进)

• 基于一次性可编程反熔丝编程单元。Actel的部分 FPGA采用这种结构。
2.7 CPLD/FPGA的编程与配置
1.3 Quartus II 设计环境
Quartus II设计工具完全支持Verilog、VHDL的设计 流程
Quartus II也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、DC-FPGA,并能直接调用这些 工具
Quartus II具备仿真功能,同时也支持第三方的仿真工 具,如ModelSim。
将对CPLD的下载称为编程(Program), 对FPGA中的SRAM进行直接下载的方式
称为配置(Configure),
1.2.4编程下载与器件测试
器件测试是将含有载入了设计的FPGA或 CPLD的硬件系统进行统一测试,以便最 终验证设计项目在目标系统上的实际工 作情况,以排除错误,改进设计。
y <= d OR e ;
END ARCHITECTURE one ;
3.1 多路选择器及其VHDL描述
【例3-3】顺序语句IF_THEN_ELSE描述
ENTITY mux21a IS
PORT ( a, b, s: IN BIT;
y : OUT BIT );
END ENTITY mux21a;
解压器在内的大规模IP模块。
1.4 EDA技术开发中的IP核
IP的实际内涵的界定 1. 嵌入式应用。 2.优化设计。 3.符合IP标准。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《硬件描述语言与FPGA技术》实验指导书西北工业大学2012/10/10目录实验一简单的组合逻辑设计 (3)实验二简单分频时序逻辑电路的设计 (5)实验三利用条件语句实现计数分频时序电路 (8)实验四阻塞赋值与非阻塞赋值的区别 (11)实验五用always块实现较复杂的组合逻辑电路 (15)实验六在Verilog中使用函数 (19)实验七在Verilog HDL中使用任务(task) (22)实验八利用有限状态机进行时序逻辑的设计 (26)实验九利用状态机实现比较复杂的接口设计 (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);input 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)i f(!RESET) //低电平复位。
beginF500K <= 0;j <= 0;ende lsebeginif(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系列,观察综合后的结果有什么不同。