基于FPGA的现代数字系统设计实验报告

合集下载

FPGA实验设计报告—广东技术师范学院

FPGA实验设计报告—广东技术师范学院

实验报告课程名称:FPGA设计及应用实验项目:FPGA设计实验时间:2014.12.8-2014.12.31实验班级:12应用师3班总份数:共 5 份指导教师:李豪彦电子与信息学院工业中心504 实验室二〇〇四年十二月十七日广东技术师范学院实验报告学院: 电信学院 专业: 应用电子技术教育 班级: 12应用师3班 成绩: 姓名: 张文斌 学号: 2012045344209 组别:组员:实验地点: 工业中心实验日期:指导教师签名:实验 (一) 项目名称: D 分 频 器设计一、实验目的1.学习分频器的设计,进一步了解、熟悉和掌握FPGA 开发软件Quartus II 的使用方法2.学习Verilog HDL 和VHDL 的编程方法二、实验内容编写一个分频器的Verilog 代码和VHDL 代码并仿真。

三、实验原理在数字电路中, 时钟信号的分频是很常见的电路。

分频器除了可以对时钟信号频率做除以二的计算外,分频器同时很类似涟波计数器。

涟波计数器是计数器的一种,它属于异步设计。

因为触发器并非皆由同一个时钟信号同步操作,所以它非常节省电路面积。

本实验要设一个带选择的分频时钟D[7:0]用于选择是几分频。

D 分频器设原理框图如图1所示:图1.D 分频器原理框图预习情况操作情况 考勤情况 数据处理情况四、实验步骤1.新建工程,取名为DVF,如下图2所示。

图2 新建工程DVF2.新建VHDL设计文件,选择“File|New ”,在New 对话框中选择Device Design Files下的VHDL File,单击OK,完成新建设计文件。

3.在新建设计文件中输入VHDL程序。

4.生成“Symbol ”文件,新建“Block Diagram/Schematic File”文件,在文件中添加刚刚生成的“Symbol ”以及输入输出管脚,最后完整的系统顶层模块图如图 3 所示。

图3 DVF 顶层模块图5.保存文件,使用qsf或者tcl 进行管脚分配。

FPGA实验报告材料实验2

FPGA实验报告材料实验2

西南科技大学实验报告课程名称:基于FPGA的现代数字系统设计实验名称:基于HDL十进制计数、显示系统设计姓名:学号:班级:通信1301指导教师:刘桂华西南科技大学信息工程学院制基于HDL十进制计数、显示系统设计一、实验目的1、掌握基于语言的 ISE 设计全流程;2、熟悉、应用 VerilogHDL描述数字电路;3、掌握基于 Verilog的组合和时序逻辑电路的设计方法;4、掌握 chipscope 片内逻辑分析仪的使用与调试方法。

二、实验原理1、实验内容:设计具有异步复位、同步使能的十进制计数器,其计数结果可以通过七段数码管、发光二极管等进行显示。

2、模块端口信号说明:输入信号:Clk_50m ---系统采样时钟clk -------待计数的时钟clr ---------异步清零信号,当 clr=0,输出复位为 0,当clr=1,正常计数ena---------使能控制信号,当 ena=1,电路正常累加计数,否则电路不工作输出信号:q[6:0]---------驱动数码管,显示计数值的个位cout -----------1bit 数据,显示计数值向十位的进位COM-----------共阳级数码管,公共端(接地,参考开发板原理图3、以自顶向下的设计思路进行模块划分:整个系统主要设计的模块是:十进制计数模块和数码管驱动模块,由于实验板的按键为实现硬件防抖,则需要将按键输入的时钟 clk,先通过消抖模块消抖后,再输出至后续使用。

1)十进制计数器模块设计输入: CLK -------待计数的时钟CLR ---------异步清零信号,当 CLR =0,输出复位为0,当 CLR =1,正常计数。

EN---------使能控制信号,当 EN=1,电路正常累加计数,否则电路不工作输出: SUM[3:0]---------- 计数值的个位。

即,在 CLK 上升沿检测到SUM=9 时,SUM 将被置 0,开始新一轮的计数。

FPGA实验报告

FPGA实验报告

FPGA实验报告一、实验目的本次FPGA实验目的是通过使用FPGA开发板,了解FPGA的基本原理和应用,培养学生对数字电路设计的基本能力。

二、实验原理FPGA(Field-Programmable Gate Array)是一种可编程逻辑芯片,通过在芯片中加入多个查找表、可编程互连和触发器等基本模块,使得用户可以根据实际需求程序设计芯片的逻辑功能和互连关系。

FPGA的主要优点是能快速更新设计并且重配置灵活,而且速度快、功耗低。

本次实验我们使用的FPGA开发板是Xilinx Spartan-6系列,采用的开发环境是Xilinx ISE Design Suite。

三、实验内容1.实验用到的器件及端口我们使用的FPGA开发板上有多个输入输出端口,如LED灯、开关、按键等。

其中LED灯作为输出端口,开关和按键作为输入端口。

实验中,我们通过控制开关的状态,来控制LED灯的亮与灭。

2.设计电路我们的实验电路主要由一个FPGA芯片、多个LED灯、多个开关和按键等组成。

具体设计如下:(插入电路图)3.编写代码我们使用Verilog语言来描述逻辑电路的功能,并将其编写成代码。

代码示例如下:module led_controllerinput wire CLK,input wire [3:0] SWITCH,output reg [7:0] LEDcase(SWITCH)endcaseendendmodule4.烧录代码通过Xilinx ISE Design Suite的工具链,将上述代码综合、实现、生成比特文件。

然后通过JTAG接口将比特文件烧录到FPGA芯片中。

5.实验结果实验结果是通过观察LED灯的亮灭情况来验证代码的正确性。

根据开关的不同状态,LED灯的亮灭也不同。

四、实验总结通过本次实验,我们深入了解了FPGA的基本原理和应用,并且使用了Xilinx Spartan-6系列的开发板完成了LED控制的实验。

通过观察LED灯的亮灭情况,验证了我们编写的代码的正确性。

FPGA实验报告

FPGA实验报告

南京理工大学泰州科技学院FPGA系统设计实验报告教材名称:FPGA系统设计与应用开发指导教师:周莉莉实验室:4401学院(系):电子电气工程学院专业班级:10电信(1)班姓名:周根生朱守超学号:1002040149 1002040150实验学期:2013-2014学年第一学期总评成绩:教师签字:南京理工大学泰州科技学院FPGA系统设计实验报告目录实验一Max+plusII原理图设计输入 (1)实验二简单逻辑电路设计与仿真 (6)实验三组合逻辑电路设计(一) (11)实验四组合逻辑电路设计(二) (16)实验五有限状态机的设计 (26)实验六数字频率计 (32)南京理工大学泰州科技学院FPGA系统设计实验报告课程: FPGA系统设计班级:10电信1班姓名:周根生朱守超学号:10020401491002040150指导教师:周莉莉实验日期:实验题目:Max+plusII原理图设计输入成绩:一、设计任务采用原理图设计输入法,设计一个具有四舍五入功能的电路,其输入为4位二进制数,要求输入大于或等于0101时,电路输出为高电平,小于0101时电路输出为低电平。

二、设计过程根据设计要求列出四舍五入的真值表,如图1.1所示。

图1.1 四舍五入真值表由图1.1可得化简的表达式为OUT=A+BD+BC,由逻辑表达式可知,要设计的电路图有四个输入端(A,B,C,D)和一个输出端OUT,整个电路由两个2输入端的与门和一个3输入的或门组成。

启动MAX+plusII,新建Graphic Editor file文件,后缀为.gdf。

在编辑界面空白处双击左键,出现输入元件对话框如图1.2所示,在Symbol Name栏中直接输入元件的符号名OK,输入端(input),输出端(output),连接电路如图1.3所示。

图1.2 操作图1.3 原理图芯片型号选择单击Assign,选择Device,如图1.4所示。

图1.4 型号引脚命名双击PIN_NAME,使其变黑后输入引脚名,并保存文件然后编译,如图1.5所示。

FPGA实验报告实验2

FPGA实验报告实验2

西南科技大学实验报告课程名称:基于FPGA的现代数字系统设计实验名称:基于HDL十进制计数、显示系统设计姓名:学号:班级:通信1301指导教师:刘桂华西南科技大学信息工程学院制基于HDL十进制计数、显示系统设计一、实验目的1、掌握基于语言的ISE 设计全流程;2、熟悉、应用VerilogHDL描述数字电路;3、掌握基于Verilog的组合和时序逻辑电路的设计方法;4、掌握chipscope 片内逻辑分析仪的使用与调试方法。

二、实验原理1、实验内容:设计具有异步复位、同步使能的十进制计数器,其计数结果可以通过七段数码管、发光二极管等进行显示。

2、模块端口信号说明:输入信号:Clk_50m ---系统采样时钟clk -------待计数的时钟clr ---------异步清零信号,当clr=0,输出复位为0,当clr=1,正常计数ena---------使能控制信号,当ena=1,电路正常累加计数,否则电路不工作输出信号:q[6:0]---------驱动数码管,显示计数值的个位cout -----------1bit 数据,显示计数值向十位的进位COM-----------共阳级数码管,公共端(接地,参考开发板原理图3、以自顶向下的设计思路进行模块划分:整个系统主要设计的模块是:十进制计数模块和数码管驱动模块,由于实验板的按键为实现硬件防抖,则需要将按键输入的时钟clk,先通过消抖模块消抖后,再输出至后续使用。

1)十进制计数器模块设计输入: CLK -------待计数的时钟CLR ---------异步清零信号,当CLR =0,输出复位为0,当CLR =1,正常计数。

EN---------使能控制信号,当EN=1,电路正常累加计数,否则电路不工作输出:SUM[3:0]---------- 计数值的个位。

即,在CLK 上升沿检测到SUM=9 时,SUM 将被置0,开始新一轮的计数。

tc ------------计数值的十位进位,即:只有在时钟CLK 上升沿检测到SUM=9 时,TC将被置1,其余情况下TC=0;在设计中可以使用always,if-else-if语句实现,设计中注意不要在两个以上的always 模块中对同一个变量进行赋值,否则会产生多重赋值源(multi-source)的问题。

FPGA实验报告 系统设计综合实践 自动售货机

FPGA实验报告 系统设计综合实践 自动售货机

FPGA实验报告系统设计综合实践自动售货机引言本实验报告旨在介绍FPGA实验中关于系统设计综合实践的内容,以及针对自动售货机的设计和实现过程。

本项目的目标是通过FPGA实现一个基本的自动售货机,能够接受货币投入并显示余额,实现商品选择和出货的功能。

设计概述在本项目中,我们使用FPGA作为硬件平台进行实现,采用VHDL语言进行编程。

整个设计主要分为三个模块:货币处理模块、商品选择模块和出货控制模块。

货币处理模块货币处理模块负责接收和处理投入的货币,并显示当前的余额。

具体实现过程如下:1.接收货币输入:使用FPGA板载的GPIO接口连接硬币接收器,将接收到的信息传递给FPGA。

2.处理货币信息:通过计算接收到的货币数量和面额,计算出当前的余额。

3.显示余额:使用FPGA板载的数码管显示当前的余额。

根据计算得到的余额,将其显示在数码管上。

商品选择模块商品选择模块负责接收用户的商品选择,并计算选中商品的价格。

具体实现过程如下:1.接收商品选择:使用FPGA板载的按键输入接口,接收用户按下的相应按键,确定用户选择的商品。

2.计算商品价格:根据用户选择的商品,从预先配置的商品价格表中查找相应的价格。

3.显示选中商品价格:使用FPGA板载的数码管显示选中商品的价格。

根据查找到的价格,将其显示在数码管上。

出货控制模块出货控制模块负责控制商品的出货和相关信息的提示。

具体实现过程如下:1.判断余额是否足够:根据当前余额和选中商品的价格,判断余额是否足够购买商品。

2.控制商品出货:如果余额足够购买商品,则触发相应的出货机构,实现商品的出货。

3.提示用户相关信息:根据出货情况,通过数码管显示相关信息,如余额不足、出货成功等提示。

实验结果经过对上述三个模块的设计和实现,我们成功地完成了自动售货机的基本功能。

在实验过程中,我们选取了几种常见的商品,并配置了相应的价格表。

通过按下相应的按键,用户可以选择购买的商品,并通过投币的方式支付。

基于FPGA设计的实验报告(模版)

基于FPGA设计的实验报告(模版)

基于FPGA设计的-实验报告姓名学号专业班级一.设计/实验项目名称:四输入抢答器设计基本内容描述:以两输入抢答电路为基本单元构建四输入抢答器。

抢答输入:IN1、IN2、IN3、IN4;低电平复位输入Reset_n;输出:OUT1、OUT2、OUT3、OUT4以高电平表示抢答成功。

二.电路设计及原理两输入抢答电路为基本单元本设计原理图(qiangdaqi_unit.bdf)如图1所示。

图1. 基本单元qiangdaqi_unit原理图图2. 四输入抢答器设计原理图基本单元电路qiangdaqi_unit以双JK触发器为核心,裁判总复位信号Reset_n(低电平有效)接触发器直接置位端,输出OUT1、OUT2应该为低电平,所以OUT1、OUT2接1QN、2QN。

抢答输入IN1和IN2分别作为触发器时钟输入(低电平有效),为限制OUT1、OUT2出现都为高电平情况,1Q和2Q分别与IN2和IN1与非后作为各触发器时钟。

考虑到基本单元电路qiangdaqi_unit扩展应用增加复位输入Reset_in和复位输出Reset_out,当OUT1或OUT2为“1”时产生(低电平有效的)Reset_out输出信号到另一基本单元电路的复位输入Reset_in端,避免产生触发器有效时钟,使该单元两输出均为低电平。

四输入抢答器以图1设计电路生成的设计模块符号进行设计的原理图如图2所示。

Reset_n接inst1和inst2的Reset_n,抢答前复位所有输出均为“0”。

四输入IN1~IN4经反相后接各模块输入,即“1”为有效电平。

三.设计电路仿真与分析四输入抢答器功能仿真结果如图3所示,由仿真图可以知道复位后哪个输入先为“1”则对应输出为“1”,实现四输入抢答器功能。

图3. 四输入抢答器功能仿真图四.实验结论由仿真试验可知:(1)设计功能正确,实现先按键者有输出;(2)输入、输出均为高电平有效,复位信号为低电平有效;(3)将图2电路中反相器inst12~inst15去掉,输入与模块直接相连可实现低电平输入有效。

FPGA实验报告5篇

FPGA实验报告5篇

FPGA实验报告5篇第一篇:FPGA实验报告FPGA实验报告专业:XXX 姓名:XXX 学号:XX一:实验目的1.熟悉Modelsim和Quartus II软件的运行环境和使用2.熟练使用Quartus II仿真软件生成网表。

3.熟悉FPGA前仿真和后仿真的整个流程。

二:实验内容编写counter计数器,在Quartus II仿真软件中生成网表,再在Modelsim中进行后仿真。

三: 实验步骤1.在Modelsim编写源程序(counter计数器及激励),编译源文件,确保程序的正确性,并进行前仿真,生成波形图如下:附:源程序如下:module counter(q,clk,reset);input clk,reset;output [3:0] q;reg [3:0] q;always @(posedge reset or negedge clk)if(reset)q <= 4'b0;elseq <= q + 1;endmodule module top;reg CLK,RESET;wire [3:0] Q;counter c1(Q,CLK,RESET);initialCLK=1'b0;always#1 CLK=~CLK;initial$monitor($time,“Q=%d”,Q);initialbeginRESET=1'b1;#5 RESET=1'b0;#180 RESET=1'b1;end endmodule 2.新建文件夹,将源程序counter.v放进去。

然后启动Quartus II仿真软件,生成网表。

1).在【File】下拉菜单中选中New Project Wizard选项,出现对话框。

并指定工程工作目录、工程名称和顶层模块名,如图(a)所示。

2).添加(Add)counter.v文件。

如图(b)所示。

3).选择器件系列4).指定其它EDA工具,如图(d)所示。

fpga实训报告

fpga实训报告

fpga实训报告摘要:本实训报告旨在介绍FPGA(现场可编程门阵列)的基本原理和应用。

文章首先介绍了FPGA的概念和发展历程,然后详细阐述了FPGA的结构和工作原理。

接着,报告列举了几个常见的FPGA应用领域,并重点介绍了在数字信号处理和通信系统中的应用。

最后,本报告总结了FPGA在实际项目中的优势和挑战,并展望了FPGA技术的未来发展方向。

1. 引言FPGA是一种可编程的逻辑芯片,具有灵活性高、性能强等特点,因而在数字电路设计和嵌入式系统开发中得到广泛应用。

本实训报告将深入介绍FPGA的原理和应用领域。

2. FPGA的概念和发展历程FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,最早由Xilinx公司于1985年推出。

与传统的固定功能集成电路相比,FPGA可以通过编程实现不同的逻辑功能。

随着技术的发展和需求的增加,FPGA的规模不断扩大,性能也不断提高。

3. FPGA的结构和工作原理FPGA由可编程逻辑元件、输入/输出接口和内部互联网络构成。

可编程逻辑元件由可编程查找表(LUT)、触发器和算术逻辑单元等组成,可以通过配置位流(Configuration Bitstream)来实现不同的逻辑功能。

内部互联网络用于连接各个逻辑元件和输入/输出接口,实现信号的传输和通信。

4. FPGA的应用领域4.1 数字信号处理FPGA在数字信号处理中广泛应用,例如音频和图像处理等。

由于FPGA具有并行计算能力和高速数据处理特性,可以实现实时的信号采集、转换和滤波等功能。

4.2 通信系统FPGA在通信系统中也有重要应用,例如调制解调器、协议转换器和网络路由器等。

通过FPGA的可编程性,可以根据不同的通信标准和协议进行灵活配置和优化设计。

4.3 自动化控制FPGA可应用于自动化控制系统,如工业控制和机器人控制等。

通过实时数据采集和处理,FPGA可以实现高精度控制和实时响应。

数字电子技术FPGA设计及其报告

数字电子技术FPGA设计及其报告

数字电子技术课程设计报告题目:基于FPGA的数字频率计设计学年:2010-2011学期:二专业:电气工程及其自动化班级:学号:姓名:指导教师:目录1 设计任务与要求 (1)2 系统设计总体方案 (1)3 各模块电路具体实现 (2)3.1 时钟分频模块 (2)3.2 时序控制模块 (3)3.3 计数模块 (3)3.4 锁存模块 (5)3.5 显示译码模块 (6)4 设计测试结果 (8)5 总结 (8)附录 (9)1 设计任务与要求本课题要完成的设计任务与要求如下:(1)、设计一个六位数的数字频率计.测量范围要求在0~999999Hz;(2)、需要设计五个模块电路,分别为:计数模块,译码显示模块,时序控制模块,分频模块,锁存模块;(3)、应用FPGA器件,通过QuartusⅡ软件(EP2C5T144C8)以原理图输入方式设计系统电路,根据设计要求选择可编程逻辑器件作为目标器件,应用QuarterⅡ软件进行系统开发设计.2 系统设计总体方案根据设计任务与要求,数字频率计系统主要有:计数模块、锁存模块、译码显示模块、时序控制模块、分频模块等电路模块组成,其系统组成框图如图2—1所示.图2—1 数字频率计系统设计组成框图各模块电路设计的主要思路和具体方案如下:(1)、计数模块:本模块主要实现六位数码管的十进制数的计数.可以通过常用的数字计数器来设计.如:74HC192、74161、74HC390等.本设计模块需要六个常用的计数器来实现个位到十万位的计数. ;(2)、锁存模块:本模块主要实现对计数值的锁存功能.可以选用常用的触发器.如D 触发器、RS触发器;或者,可以选用常用的锁存器来实现该功能;(3)、译码显示模块:本模块主要实现对计数模块的测量值以十进制数来显示,本系统选用共阴极数码管来作为显示器件,这里我们选用74HC138作为译码驱动器件;(4)、时序控制模块:本模块主要实现系统内部的各个模块协的调工作,主要产生三个控制信号:一秒钟的计数控制信号、锁存器的开启信号、计数器清零信号;(5)、分频模块:本模块主要实现将50MHz的时钟信号转换成1Hz的时钟信号.这里选用Verilog硬件描述语言来设计该模块电路.3 各模块电路具体实现3.1 时钟分频模块根据整个系统中各模块电路的需求,本模块主要实现将EDA实验板上50MHz晶振产生的时钟脉冲经过分频得到1Hz的时钟信号,考虑到应用触发器或计数器来设计,电路实现比较困难和繁琐,因此选择应用Verilog硬件描述语言来设计设计本模块电路,具体程序如下:module clk_div(CLK_in,CLK_out);input CLK_in;output CLK_out;reg CLK_out;reg[25:0] temp;always @(posedge CLK_in)beginif(temp>=25000000)begintemp=0;CLK_out= ~ CLK_out;endelsetemp=temp+1;endendmodule经过QuartusII软件综合后,电路的模块图如图3.1—1所示.图3.1—1 时钟分频模块电路图3.2 时序控制模块为了实现计数模块的计数和清零功能和锁存器的锁存开启功能可以在整个系统中协调工作,本模块电路采用QuartusII软件,以原理图的形式编辑,主要选用了T触发器将1Hz 脉冲信号转换成0.5Hz,T H为1秒的脉冲来作为计时器使能脉冲;经非门产生与计数使能脉冲相反的0.5Hz脉冲作为锁存器开启脉冲;将1Hz脉冲与0.5Hz脉冲经与门产生一个占空比为1/4,频率也为0.5Hz的脉冲信号作为计数器清零信号.具体电路原理图如图3.2—1所示.电路产生的时序波形图如图3.2—2所示.图3.2—1 时序控制模块电路原理图(1)En_jishu 引脚输出的是0.5Hz的时钟信号,也就是控制计数器的1秒钟时钟信号;(2)LOCK_EN 引脚输出的是0.5Hz的锁存器的开启信号;(3)qingling 引脚输出的是占空比为1:4且频率也为0.5Hz的时钟信号.图3.2—2 系统时序波形图3.3 计数模块根据设计要求要实现六位数的测量所以这里要求设计一个六位数的计数器,本模块电路选用74HC192来设计这个计数器在本设计中将计数模块设计成两成,第一层是将两个74HC192组合连接做成两位数的计数器;第二层将三个第一层的组合模块器件组合在一起这样就有六个74HC192就实现了六位十进制数的计数.第一层电路原理图如图3.3—1所示.;该层应用QuartusII软件创建的完整的模块图如图3.3—2所示.图3.3—1 计数第一层电路原理图图3.3—2第一层层电路模块图第二层原理图如图3.3—3所示;图3.3—3 计数器第二层原理图该层应用QuartusII软件创建的完整的模块图如图3.3—4所示.图3.3—4 计数器第二层模块图计数器模块仿真时序图如图3.3—5所示.图3.3—5 计数模块仿真时序图标注:由于仿真时间长,无法看到整个过程这里就截取数值为“099635“附近的仿真结果.3.4 锁存模块本模块主要完成对计数器的计数值的锁存功能,由于被测脉冲是不间断的,计数器会不断的计数循环没有一个固定的值,所以需要设计一个锁存模块来对计数器的计数值进行锁存,应用D触发器可以就可以实现数值的锁存功能,本模块采取将24个D触发器和在一起对计数器的产生的24位二进制数尽心锁存的理念设计了一个锁存模块,具体电路原理图如图3.4—1所示.应用QuartusII软件创建的完整的模块图如图3.4—1所示.图3.4—1 四位二进制数的锁存电路原理图应用QuartusII软件创建的完整的模块电路图如图3.4—2所示.图3.4—2 24位二进制数的锁存电路模块图3.5 显示译码模块根据EDA实验板上现有的数码管,只有7SLEDA、7SLEDB两个共阴数码管没有接译码驱动器件的,其余的四个数码管都已经现有接了CD4511.所以本设计中只需做两位数的译码驱动.本模块主要实现实两位数的译码显示,由于EDA实验板中是共阴的数码管,所以需要共阴译码驱动器件,这里应用74HC48来实现该设计中的译码显示,具体电路原理图如图3.5—1所示.图3.5—1 两位共阴数码管的译码驱动电路原理图应用QuartusII软件创建的完整的模块电路图如图3.5—2所示.图3.5—2 完整的译码模块器件译码模块时序仿真图如图3.5—3所示.图3.5—3 译码模块时序仿真图DD2对应输入端H、DD1对应输入端D.当H为1,D为1时;DD2为(011000)即为数码管显示“1”,DD1为(1111110)也就是数码管显示“0”.4 设计测试结果根据书本中芯CyclneⅡ系列的EP2C5T144C8芯片的引脚分配列表对所有引脚进行PIN 脚设置,50MHz信号就由EDA实验板上的50MHz晶振产生,引脚标号为“17“;被测信号由EDA实验板上的3.768KHz产生,经过4060分频产生4Hz、64Hz、128Hz、256Hz、512Hz、1024Hz、2048Hz、引脚编号为”88“,不同频率之间的转换用EDA实验板上的跳针来实现.最后下载到实验板上.本次下载用EDA实验板上的临时下载口下载,断电后就会被清除.测试结果当跳针在4Hz时数码管上显示”000004“左右、当跳针在512Hz时数码管显示”000512“左右数据有误差产生的原因可能有以下几点:(1) EDA实验板上的晶振产生的脉冲频率不稳定;(2) EDA实验板上脉冲经过4606分频后脉冲变得不稳定;(3)本设计中有很多的门电路,可能各个门电路上有延时.5 总结在为期四天的课程设计中我受益良多,首先,在一个月的寒假中我对QuartusⅡ已经遗忘了很多,在这次的课程设计中我有加深了对QuartusⅡ软件了解,更加熟悉了对Quartus Ⅱ软件的操作,在这次设计中又学会了一些新的操作方法,比如分层设计、分模块的设计方法、总线的连接方法等等.这让设计的条理变得更加清晰、方向更加明确、而且遇到错误查找起来更方便.不会像以前一样一旦有错误就要满设计的找,像个无头苍蝇一样.其次,在这次设计中我选用了74HC192来设计计数模块,这就让我更加清楚明白74HC192的功能,对其的引脚的功能更加清楚了.比如:CLR 清零、LD预置数、UP端加法计数脉冲接口、Down减法计数脉冲接口.CON 进位端,当74HC192计数到9时CON端就会产生一个低电平,BON端借位端,当74HC129减到0时BON端就会产生一个低电平等等.同时对该芯片的功能表也更加了解了,这次设计中也让我对D触发器和T触发器进行了一次复习.最后,这次设计不仅仅学会了对课程的设计,也同样知道了一些对今后学的设计,对生活的设计.在课程设计中,我们要先想好总的框架图,然后在细分到各个模块,再在各个模块中进行分设计,最后在综合在一起,这样就条理更清晰,不容易出差错.这和学习和生活的道理也是一样的,在学习上我们要先计划好学习的计划,然后再分步去做各个小的细节.这样就让学习更加的有效率.生活中也是要先规划好,小到一天或一个星期,大到一个月、一个季度或是一年.这样才更加的生活有节奏,不会浪费时间,碌碌无为,一学期下来什么都没有做.所以在今后的学习生活中我会尽力秉着这次课程设计时后的精神和方法去应对今后的学习和生活.附录系统设计总电路原理图如图5—1所示:图5—1 设计总图9 / 11。

【实验】基于FPGA数字电路实验指导

【实验】基于FPGA数字电路实验指导

【关键字】实验基于FPGA数字电路实验指导(修改稿)湖北科技学院计算机科学与技术学院编制工程技术研究院目录第一部分实验基础知识随着科学技术的发展,数字电子技术在各个科学领域中都得到了广泛的应用,它是一门实践性很强的技术基础课,在学习中不仅要掌握基本原理和基本方法,更重要的是学会灵活应用。

因此,需要配有一定数量的实验,才能掌握这门课程的基本内容,熟悉各单元电路的工作原理,各集成器件的逻辑功能和使用方法,从而有效地培养学生理论联系实际和解决实际问题的能力,树立科学的工作作风。

一.实验的基本过程实验的基本过程,应包括:确定实验内容、选定最佳的实验方法和实验线路、拟出较好的实验步骤、合理选择仪器设备和元器件、进行连接安装和调试、最后写出完整的实验报告。

在进行数字电路实验时,充分掌握和正确利用集成器件及其构成的数字电路独有的特点和规律,可以收到事半功倍的效果,对于完成每一个实验,应做好实验预习、实验记录和实验报告等环节。

(一)实验预习认真预习是做好实验的关键。

预习好坏,不仅关系到实验能否顺利进行,而且直接影响实验效果。

预习应按本教材的实验预习要求进行,在每次实验前首先要认真复习有关实验的基本原理,掌握有关器件使用方法,对如何着手实验做到心中有数,通过预习还应做好实验前的准备,写出一份预习报告,其内容包括:1.绘出设计好的实验电路图,该图应该是逻辑图和连线图的混合,既便于连接线,又反映电路原理,并在图上标出器件型号、使用的引脚号及元件数值,必要时还须用文字说明。

2.拟定实验方法和步骤。

3.拟好记录实验数据的表格和波形座标。

4.列出元器件单。

(二)实验记录实验记录是实验过程中获得的第一手资料。

尝试过程中所尝试的数据和波形必须和理论基本一致,所以记录必须清楚、合理、正确,若不正确,则要现场及时重复尝试,找出原因。

实验记录应包括如下内容:1.实验任务、名称及内容。

2.实验数据和波形以及实验中出现的现象,从记录中应能初步判断实验的正确性。

fpga实训报告

fpga实训报告

fpga实训报告1、实训背景本次FPGA实训旨在提升学员对于FPGA(Field-Programmable Gate Array)的了解和应用能力。

通过实际操作,加深对FPGA结构、原理和编程的理解,提高在数字电路设计和嵌入式系统开发中的实践能力。

2、实训目标2.1 掌握FPGA的基本原理和工作原理;2.2 熟悉FPGA的开发环境和常用开发工具;2.3 学会使用硬件描述语言(HDL)进行FPGA的设计和编程;2.4 利用FPGA实现数字电路设计和嵌入式系统开发。

3、实训过程与方法本次FPGA实训采用了以下步骤和方法:3.1 理论学习:通过课堂讲解和学习资料,学习FPGA的基本概念、原理和应用领域;3.2 实验操作:通过实验指导书,按照实验流程进行FPGA开发环境的搭建、FPGA设计和编程的实际操作;3.3 问题解决:在实验过程中遇到问题时,通过查阅资料、请教老师和同学等方式解决,保证实验的顺利进行;3.4 实验总结:每个实验结束后,撰写实验总结报告,总结所学到的知识和经验。

4、实训内容4.1 FPGA基础知识学习:包括FPGA的定义、特点、结构和工作原理等内容;4.2 FPGA开发环境搭建:包括安装开发软件、连接开发板和计算机等操作;4.3 硬件描述语言(HDL)的学习和应用:包括Verilog和VHDL的基本语法、模块化设计和状态机的实现等;4.4 FPGA设计和编程实验:包括数电实验、数字系统设计和嵌入式系统开发等;4.5 实验总结和报告撰写:对每个实验进行总结,包括实验目的、步骤、结果和心得体会等。

5、实训成果通过本次FPGA实训,学员们取得了一定的成果:5.1 提高了对FPGA的理解和应用能力;5.2 熟悉了FPGA开发环境和常用工具的使用;5.3 学会了使用HDL进行FPGA设计和编程;5.4 实现了数字电路设计和嵌入式系统开发等应用。

6、实训心得本次FPGA实训让我对FPGA有了更深入的了解,通过实际操作,我不仅学会了使用FPGA开发环境和编程工具,还实现了一些具体的应用。

fpga 实验报告

fpga 实验报告

fpga 实验报告
这是一份关于 FPGA 实验的报告,主要包括实验目的、实验原理、实验步骤、实验结果及分析等内容。

一、实验目的
本次实验的主要目的是熟悉 FPGA 的基本结构及开发流程,掌握 FPGA 的基本设计方法和原理,并提高实验操作技能。

二、实验原理
FPGA 是一种可编程逻辑器件,其原理是利用可编程逻辑单元和可编程互连资源实现数字逻辑电路功能。

FPGA 可以通过编程来实现不同的功能,具有灵活性和可重构性。

三、实验步骤
1.熟悉工具、芯片型号及开发板型号。

2.根据实验要求打开 Vivado 设计套件,创建一个新工程。

3.在工程中创建一个 VHDL 组合逻辑电路,并实现四个 NAND 门的功能。

4.合成电路,并进行布局和布线。

5.下载到 FPGA 开发板上。

6.测试电路功能。

四、实验结果及分析
实验中,我们成功设计并实现了四个 NAND 门,可以进行逻辑与、或、非运算。

并通过仿真和实际测试,验证了电路的正确性。

在布局和布线的过程中,我们也可以看到 FPGA 的内部结构和资源分配情况。

总的来说,这个实验使我们更深入地了解了 FPGA 的基本原理和开发流程,对我们今后的研究和开发工作都有很大的帮助。

FPGA实践verilog数字设计报告

FPGA实践verilog数字设计报告

FPGA设计与实践题目:姓名:学号:学院:专业:年级:指导教师:2017年01月07日FPGA设计与实践评分表目录实验一与或非 01.1实验目的 01.2实验要求 01.3实验内容 01.3.1 设计 01.3.2 源程序 01.3.3 测试程序 (1)1.4仿真结果 (1)1.5分析总结 (1)实验二半加器 (2)2.1实验要求 (2)2.2实验内容 (2)2.2.1 设计 (2)2.2.2 源程序 (2)2.2.3 测试程序 (3)2.3仿真结果 (3)实验三全加器 (3)3.1实验要求 (3)3.2实验内容 (3)3.2.1 设计 (3)3.2.2 源程序 (4)3.2.3 测试程序 (4)3.3仿真结果 (4)实验四 2选1MUX (5)4.1实验要求 (5)4.2实验内容 (5)4.2.1 设计 (5)4.2.2 源程序 (5)4.2.3 测试程序 (5)4.3仿真结果 (6)实验五奇偶校验器 (6)5.1实验要求 (6)5.2实验内容 (6)5.2.1 设计 (6)5.2.2 源程序 (6)5.2.3 测试程序 (7)5.3仿真结果 (7)实验六比较器 (7)6.1实验要求 (7)6.2实验内容 (8)6.2.1 设计 (8)6.2.2 源程序 (8)6.2.3 测试程序 (8)6.3仿真结果 (9)实验七计数器 (9)7.1实验要求 (9)7.2实验内容 (9)7.2.1 设计 (9)7.2.2 源程序 (10)7.2.3 测试程序 (10)7.3仿真结果 (11)实验八 LATCH (11)8.1实验要求 (11)8.2实验内容 (11)8.2.1 设计 (11)8.2.2 源程序 (12)8.2.3 测试程序 (12)8.3仿真结果 (13)实验九移位寄存器 (13)9.1实验要求 (13)9.2实验内容 (13)9.2.1 设计 (13)9.2.2 源程序 (14)9.2.3 测试程序 (14)9.3仿真结果 (15)实验十 ALU (15)10.1实验要求 (15)10.2实验内容 (15)10.2.2 源程序 (16)10.2.3 测试程序 (17)10.3仿真结果 (17)实验十一优先编码器 (18)11.1实验要求 (18)11.2实验内容 (18)11.2.1 设计 (18)11.2.2 源程序 (19)11.2.3 测试程序 (20)11.3仿真结果 (20)实验十二四位加法器 (21)12.1实验要求 (21)12.2实验内容 (21)12.2.1 设计 (21)12.2.2 源程序 (21)12.2.3 测试程序 (22)12.3仿真结果 (22)实验十三状态机 (23)13.1实验要求 (23)13.2实验内容 (23)13.2.1 设计 (23)13.2.2 源程序 (23)13.2.3 测试程序 (24)13.3仿真结果 (25)实验十四偶分频 (25)14.1实验要求 (25)14.2实验内容 (25)14.2.1 设计 (25)14.2.2 源程序 (26)14.2.3 测试程序 (26)14.3仿真结果 (27)实验十五奇分频 (27)15.1实验要求 (27)15.2实验内容 (27)15.2.1 设计 (27)15.2.3 测试程序 (28)15.3仿真结果 (28)实验一与或非1.1 实验目的(1)熟悉Modelsim软件;(2)掌握Modelsim软件的编译、仿真方法;(3)熟练运用Modelsim 软件进行Verilog HDL 程序设计开发.1.2 实验要求自行设计“与-或-非”门电路,根据设计的门级电路模型,设计verilog模型。

FPGA实验报告

FPGA实验报告

实验1:状态机实验目的:学习FPGA设计软件教学基本要求:掌握软件流程,掌握状态机编程实验内容提要:设计一个状态机1. 你觉得上面这段代码中,q 到底在怎样变化?(实验1ppt14页)答:在上述代码中,q变化如下:首先判断复位信号 rst 是否为 0,如果是 0 则q复位为0;否则当时钟信号上升沿到来时,将d的值赋给q,再判断a的值,如果a为1,则将b赋值给次态q,如果a为其他值,则将现态q赋给次态q。

2. 本页中,q 到底在怎样变化?(实验1 ppt15页)答:如果异步复位信号rst为0,则q置0;rst不为0时,当时钟上升沿到来时,判断a的值,如果a=1,则将b的值赋给q的次态,如果a是其他值,则将q的现态赋给q 的次态,结束这个判断语句后,将d赋值给q。

3. 画出你理解的这个电路的原理图(ppt16页)4.Out1 out2 out3 out4有什么区别?out1的上升沿与下降沿和50MHz时钟的上升沿始终保持一致,周期变为50MHz时钟的6倍,实现周期扩展;out2的上升沿与clkin的上升沿保持一致,下降沿与out1的上升沿保持一致,可将clkin的数据记录下来以起数据使能作用;out3的上升沿恰好是out2的下降沿,比out2慢一拍,是更适合使用的前端使能;out4的上升沿与out3的下降沿保持一致,可以减少延迟。

2. 红绿灯实验中,该状态机最少几个触发器可以实现?该逻辑情况下红绿灯状态机最少只需8个触发器即可实现。

将3个计时计数触发器合并,并将溢出、使能触发器达成的功能改由计数数值在各状态下的交替变化,使用组合逻辑代替触发器,达成减少触发器使用的设计方案。

实验2 数字钟设计实验目的:掌握FPGA语言设计方法教学基本要求:学习基本的VHDL语言结构和设计实验内容提要:使用VHDL设计一个完整的数字钟实验问题回答:1.现在的时钟是秒时钟,实际系统的时钟是50MHz.那用50MHz的时钟的情况下,仿真1小时要多少时间?如何解决该问题?仿真一小时需要计数器计数3600次,计数脉冲由50MHz的时钟驱动。

基于FPGA的交通灯设计——数字系统课程设计实习报告书

基于FPGA的交通灯设计——数字系统课程设计实习报告书

河南科技学院信息工程学院数字系统课程设计报告书课题名称:基于FPGA的交通灯设计院系:信息工程学院姓名学号:**、2***专业班级:通信工程、通信指导教师:刘艳昌、左现刚设计时间:20**-20**学年第2学期**-**周2016年*月**日目录摘要 (1)1设计目的 (2)2设计内容及要求 (2)3系统设计总体方案及设计原理 (2)4各模块电路设计与实现 (3)4.1分频模块设计与实现 (3)4.2减法计数模块设计与实现 (4)4.3数码管驱动模块设计与实现 (7)5系统仿真及硬件下载 (8)6设计总结 (10)参考文献摘要FPGA技术在数字电子系统设计领域越来越普及,并且FPGA技术实现在实际应用时也非常方便。

它是作为专用集成电路(ASIC)领域的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

Verilog HDL语言作为一种规范的硬件描述语言,被广泛应用于电路的设计中。

利用Verilog HDL语言自顶而下的设计方法设计交通灯控制系统,实现道路的正常畅通,并通过Quartus II9.1完成综合仿真。

将程序下载到FPGA芯片上,可应用于现实生活中的交通灯控制系统。

【关键词】FPGA,Verilog HDL,ASIC,可编程器件1、设计目的(1)掌握运用Quartus II9.1软件进行可编程逻辑器件设计的方法。

(2)掌握FPGA进行计数器以及数码管驱动电路设计的方法。

(3)熟练掌握可编程逻辑器件的文本输入(Verilog)的设计方法。

(4)掌握Quartus II9.1进行仿真以及可编程器件进行硬件下载方法。

2、设计内容及要求设计并实现交通灯控制电路,下载到芯片EP2C8Q208C8。

设计一个交通红路灯。

分为A、B两个路口,每个路口安装红、黄、绿三种颜色的灯。

设计一个计时器用倒计时的方法显示时间,A路口红灯(ared)、黄灯(ayellow)、绿灯(agreen)亮灯时间依次是40秒、5秒、30秒,B路口红灯(bred)、黄灯(byellow)、绿灯(bgreen)亮灯时间依次是40秒、5秒、30秒。

基于FPGA的数字电路实验报告

基于FPGA的数字电路实验报告
2.初步了解模块化设计的思想,理解累加器的工作原理,用硬件描述语言实现指定功能的累加器设计。
·4位累加器
1.设计方案
需要用两个模块,一个用来进行保存工作,即累加器,另一个用来实现数据相加,即加法器。这样即可每次把数据加到总和里,实现累加器的工作。
2.原理说明及框图
基本原理为书上的结构图。只要实现了两个主要模块,再用线网连接即可。
State1
0
0
State1
State10
State1
0
0
State10
Empty
State101
0
0
State101
State1010
State1
0
0
State1010
Empty
Empty
0
1
经过状态化简,上面状态已经为最简状态。
状态装换图:
在用HDL代码实现时,利用always块和case语句实现有限状态机。
答:用两个异或门,比较计数器的输出与一个加数的大小,若相等时则输出低电平到累加器的使能端,则可停止累加。
实验9序列检测器的设计
·实验目的
掌握利用有限状态机实现时序逻辑的方法。
1实验原理:
有限状态机(FSM)本质上是由寄存器和组合逻辑电路构成的时序电路。次态由当前状态和输入一起决定,状态之间的转移和变化总是在时钟沿进行。有限状态机分为Moore型和Mealy型。Moore型有限状态机输出仅由当前状态决定;Mealy型有限状态机输出由当前状态和输入同时决定。
·思考题
1.给出锁存器的定义,它与边沿触发器的区别是什么?
答:锁存器是一种对脉冲电平敏感的存储单元电路,它可以在特定输入脉冲电平作用下改变状态。边沿触发器只有在固定的时钟上升沿或者下降沿来临时改变状态。可以通过锁存器实现边沿触发器。

FPGA报告实验4

FPGA报告实验4

西南科技大学实验报告课程名称:基于FPGA的现代数字系统设计实验名称:硬件电子琴电路设计姓名:学号:班级:通信1301指导教师:刘桂华西南科技大学信息工程学院制硬件电子琴电路设计实验原理一、实验目的:学习利用数控分频器设计硬件电子琴实验。

二、原理说明:主系统由3个模块组成,例1是顶层设计文件,其内部有三个功能模块(如图1所示):Speakera.v(例4) 和ToneTaba.v (例3),NoteTabs.v (例2)。

模块ToneTaba是音阶发生器,当8位发声控制输入Index中某一位为高电平时,则对应某一音阶的数值将从端口Tone输出,作为获得该音阶的分频预置值;同时由Code输出对应该音阶简谱的显示数码,如‘5’,并由High输出指示音阶高8度显示。

模块Speakera中的主要电路是一个数控分频器,它由一个初值可预置的加法计数器构成,当模块Speakera由端口Tone获得一个2进制数后,将以此值为计数器的预置数,对端口Clk12MHZ输入的频率进行分频,之后由Spkout 向扬声器输出发声。

增加一个NoteTabs模块用于产生节拍控制(Index数据存留时间)和音阶选择信号,即在NoteTabs模块放置一个乐曲曲谱真值表,由一个计数器的计数值来控制此真值表的输出,而由此计数器的计数时钟信号作为乐曲节拍控制信号,从而可以设计出一个纯硬件的乐曲自动演奏电路。

图1 硬件电子琴电路结构二、实验步骤1、构建一个工程名为songer的工程2、分别输入ToneTaba.v、Speakera.v、的Verilog HDL文本,进行综合和功能仿真,理解、验证模块功能。

(1)创建音节发生器ToneTaba.v模块module ToneTaba (Index,Code,High,Tone);input[3:0] Index;output[3:0] Code;output High;output[10:0] Tone;reg[3:0] Code;reg High;reg[10:0] Tone;always @ (Index)begincase(Index)4'b0000:beginTone<=11'b11111111111;Code<=4'b0000;High<=1'b0;end//2047 4'b0001:beginTone<=11'b01100000101;Code<=4'b0001;High<=1'b0;end//773 4'b0010:beginTone<=11'b01110010000;Code<=4'b0010;High<=1'b0;end//912 4'b0011:beginTone<=11'b10000001100;Code<=4'b0011;High<=1'b0;end//1036 4'b0101:beginTone<=11'b10010101101;Code<=4'b0101;High<=1'b0;end//1197 4'b0110:beginTone<=11'b10100001010;Code<=4'b0110;High<=1'b0;end//1290 4'b0111:beginTone<=11'b10101011100;Code<=4'b0111;High<=1'b0;end//1372;4'b1000:beginTone<=11'b10110000010;Code<=4'b0001;High<=1'b1;end//1410;4'b1001:beginTone<=11'b10111001000;Code<=4'b0010;High<=1'b1;end//1480;4'b1010:beginTone<=11'b11000000110;Code<=4'b0011;High<=1'b1;end//1542;4'b1100:beginTone<=11'b11001010110;Code<=4'b0101;High<=1'b1;end//1622;4'b1101:beginTone<=11'b11010000100;Code<=4'b0110;High<=1'b1;end//1668;4'b1111:beginTone<=11'b11011000000;Code<=4'b0001;High<=1'b1;end//1728;default:beginTone<=11'b11111111111;Code<=4'b0000;High<=1'b0;end//2047 endcaseendendmodule对该模块进行综合,然后创建激励文件Test Fixture如下:得到波形图如图所示:(2)创建一个数控分频器Speakera.v模块module Speakera(Clk,Tone,SpkS); input Clk;input[10:0] Tone;output SpkS;reg PreClk;reg FullSpkS;reg[3:0] Count4;reg[10:0]Count11;reg Count2;reg SpkS;always@(posedge Clk)beginif(Count4>11)beginPreClk<=1'b1;Count4<=1;endelse beginPreClk<=1'b0;Count4<=Count4+1'b1;endendalways@(posedge PreClk)beginif(Count11>=11'h7FF) beginCount11<=Tone;FullSpkS<=1'b1;endelse beginCount11<=Count11+1'b1;FullSpkS<=0;endendalways@(posedge FullSpkS)beginCount2<=~Count2;if(Count2==1'b1) SpkS<=1'b1;else SpkS<=1'b0;endendmodule然后进行综合。

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

****大学实验报告课程名称:基于FPGA的现代数字系统设计实验名称:基于HDL十进制计数显示系统设置姓名:学号: 班级:指导教师:****大学信息工程学院制基于HDL十进制计数显示系统设置一、实验要求1.设计具有异步复位,同步使能的十进制计数器,其计数结果通过七段数码管,发光二极管等进行显示。

2.主要设计的模块有十进制计数模块和数码管驱动模块以及消抖模块。

3.需要将按键输入的时钟,然后通过消抖模块消抖后,再输出至后续使用。

4.共阴极数码管驱动。

二、实验原理本次的设计是一个具有数显输出的十进制计数器。

示意图如2.1所示。

图2.1七段数码管属于数码管的一种,是由7段二极管组成。

按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。

本实验使用共阴数码管。

它是指将一切发光二极管的阴极接到一同构成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平相应字段就点亮,当某一字段的阳极为低电平相应字段就不亮。

显示译码器,用HDL语言判断CLK的上升沿信号,每次收到一次上升沿信号,计数器的值加一并显示在数码管上,所以本次实验会将十进制计数与七段数码管的显示分别写在两个模块里面。

系统模块划分及引脚连线图如下:三、实验步骤(设计输入)1.十进制计数器模块module cnt10(clk,clr,ena,sum,cout);input clk,clr,ena;output [3:0] sum;output cout;reg [3:0] sum;reg cout;always @ (posedge clk or posedge clr)if(clr==1)beginsum <= 4'b0000; cout<= 1'b0;endelse if(ena==1'b1)if(sum==4'b1001)beginsum <= 4'b0000; cout<= 1'b1; endelsebeginsum <= sum+1; cout<= 1'b0; endelsebeginsum <= sum; cout<= cout; endEndmodule程序主要思路是用always等待clk与clr的上升沿信号,因为是异步清零所以在always 中也要等待clr的清零信号。

用if语句判断clr信号,为1则清零。

判断ena信号,为1进行计数操作,为0输出保持不变。

计数中,判断sum的值如果为9时,进行进位操作,并将sum值赋值为02.数码管驱动模块module led7 (sum ,out );input [3:0] sum;output [6:0] out;reg [6:0] out ;always @(sum)beginout = {7{1'b0}};case (sum) //根据共阳接法译码4'b0000 : out [6:0] = 7'b1000000;4'b0001 : out [6:0] = 7'b1111001;4'b0010 : out [6:0] = 7'b0100100;4'b0011 : out [6:0] = 7'b0110000;4'b0100 : out [6:0] = 7'b0011001;4'b0101 : out [6:0] = 7'b0010010;4'b0110 : out [6:0] = 7'b0000010;4'b0111 : out [6:0] = 7'b1111000;4'b1000 : out [6:0] = 7'b0000000;4'b1001 : out [6:0] = 7'b0011000;default : out [6:0] = {7{1'b0}};endcaseendEndmodule用一个case语句判断输入的data_in的值,选择data_out的输出,这样比用原理图设计数码管要大大的减少工作量。

3.顶层模块①用verilog HDL代码描述模块的连接,构成如下图所示的系统:module top(clk_50,clk,clr,ena,cout,out);input clk,clr,ena,clk_50;output cout;output [6:0]our;wire [3:0]temp;cnt10 u1(pin_out,clr,ena,cout,temp);led u2(temp,out);debounce_module u3(clk_50,clk,pin_out);endmodule②引脚锁定引脚锁定表相应的用户约束文件:NET "clk" LOC = V16 | IOSTANDARD = LVCMOS33 | PULLDOWN ;NET "clk_50m" LOC = C9 | IOSTANDARD = LVCMOS33 ;NET "clr" LOC = N17 | IOSTANDARD = LVCMOS33;NET "ena" LOC = H18 | IOSTANDARD = LVCMOS33;NET "q[0]" LOC = C5 | IOSTANDARD = LVCMOS33; # DATA0 aNET "q[1]" LOC = B4 | IOSTANDARD = LVCMOS33; # DATA1 bNET "q[2]" LOC = A4 | IOSTANDARD = LVCMOS33; # DATA2 cNET "q[3]" LOC = F7 | IOSTANDARD = LVCMOS33; # DATA3 dNET "q[4]" LOC = B6 | IOSTANDARD = LVCMOS33; # DATA4 eNET "q[5]" LOC = E7 | IOSTANDARD = LVCMOS33; # DATA5 fNET "q[6]" LOC = A6 | IOSTANDARD = LVCMOS33; # DATA6 gNET "COM" LOC = D5 | IOSTANDARD = LVCMOS33; # DATA7 DIG注意:由于clk没锁于ISE默认的时钟输入引脚上,需要添加“CLOCK_DEDICATED_ROUTE = FALSE;”为了更好的消抖效果,需要在V16输入端口加入下拉电阻,即需加“PULLDOWN”。

所以在约束文件(.ucf)中clk的锁定应为为:1)NET “clk” LOC = “V16” |PULLDOWN | CLOCK_DEDICATED_ROUTE = FALSE;”:或者2)NET “clk” LOC = “V16” |PULLDOWN ;NET "clk" CLOCK_DEDICATED_ROUTE=FALSE;4.双击Implement Design,进行布局布线,双击Generate Programming File生成下载文件,双击Configure Target Device,完成结果如图所示。

四、实验结果及分析共阴极数码管驱动模块的输入与输出:输入是0000 输出是1111110;输入是0001 输出是0110000;输入是0010 输出是1101101; 输入是0011 输出是1111001;输入是0100 输出是0110011; 输入是0101 输出是1011011;输入是0110 输出是1011111; 输入是0111 输出是1110000;输入是1000 输出是1111111; 输入是1001 输出是1111011;输入是1010 输出是1110111; 输入是1011 输出是0011111;输入是1100 输出是1001110; 输入是1101 输出是0111101;输入是1110 输出是1001111; 其他输入输出是1000111;五、实验思考题解答(实验指导书要求的思考题)1.如何用两个或一个always 实现十进制计数模块?写出相应代码。

答:用always实现十进制计数模块,程序如下:module cnt10(clk,clr,ena,sum,cout);input clk,clr,ena;output [3:0] sum;output cout;reg [3:0] sum;reg cout;always @ (posedge clk or posedge clr)if(clr==1)beginsum <= 4'b0000; cout<= 1'b0;endelse if(ena==1'b1)if(sum==4'b1001)beginsum <= 4'b0000; cout<= 1'b1; endelsebeginsum <= sum+1; cout<= 1'b0; endelsebeginsum <= sum; cout<= cout; endEndmodule2.如何用always,或assign实现数码管的驱动设计?写出相应代码。

答:用always实现数码管驱动设计,程序如下:module led7 (sum ,out );input [3:0] sum;output [6:0] out;reg [6:0] out ;always @(sum)beginout = {7{1'b0}};case (sum) //根据共阳接法译码4'b0000 : out [6:0] = 7'b1000000;4'b0001 : out [6:0] = 7'b1111001;4'b0010 : out [6:0] = 7'b0100100;4'b0011 : out [6:0] = 7'b0110000;4'b0100 : out [6:0] = 7'b0011001;4'b0101 : out [6:0] = 7'b0010010;4'b0110 : out [6:0] = 7'b0000010;4'b0111 : out [6:0] = 7'b1111000;4'b1000 : out [6:0] = 7'b0000000;4'b1001 : out [6:0] = 7'b0011000;default : out [6:0] = {7{1'b0}};endcaseendEndmodule3.比较实验一与实验二的实验过程,说明原理图输入法与HDL输入法的不同的应用环境。

相关文档
最新文档