哈工大FPGA设计与应用分频器设计实验报告

合集下载

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灯的亮灭情况,验证了我们编写的代码的正确性。

分频器设计实验报告

分频器设计实验报告

分频器设计实验报告一、实验目的本次实验的主要目的是设计并实现一个分频器,以深入理解数字电路中频率分频的原理和实现方法,掌握相关的电路设计和调试技能。

二、实验原理分频器是一种数字电路,用于将输入的时钟信号的频率降低为原来的 1/N,其中 N 为分频系数。

常见的分频器有偶数分频器和奇数分频器。

偶数分频器的实现相对简单,可以通过计数器来实现。

当计数器计数值达到分频系数的一半时,输出信号翻转,从而实现偶数分频。

奇数分频器的实现则较为复杂,通常需要使用多个触发器和组合逻辑电路来实现。

在本次实验中,我们将分别设计一个偶数分频器(以 4 分频为例)和一个奇数分频器(以 3 分频为例)。

三、实验器材1、数字电路实验箱2、示波器3、逻辑分析仪4、集成电路芯片(如 74LS 系列芯片)四、实验步骤(一)4 分频器的设计与实现1、原理图设计使用 74LS161 四位二进制同步计数器作为核心器件。

将计数器的时钟输入端连接到输入时钟信号。

将计数器的输出端 Q2 和 Q0 通过与门连接到一个 D 触发器的时钟输入端。

将 D 触发器的输出端作为 4 分频器的输出。

2、硬件连接按照原理图在数字电路实验箱上进行芯片的插装和连线。

3、调试与测试输入一个频率稳定的时钟信号。

使用示波器观察输入时钟信号和输出分频信号的波形,验证是否实现了 4 分频。

(二)3 分频器的设计与实现1、原理图设计使用两个 D 触发器和一些组合逻辑门(如与门、或门等)来实现 3 分频。

第一个 D 触发器的输出作为第二个 D 触发器的输入。

通过组合逻辑门对两个 D 触发器的输出进行处理,得到 3 分频的输出信号。

2、硬件连接按照原理图在数字电路实验箱上进行芯片的插装和连线。

3、调试与测试输入一个频率稳定的时钟信号。

使用示波器观察输入时钟信号和输出分频信号的波形,验证是否实现了 3 分频。

五、实验结果(一)4 分频器实验结果通过示波器观察输入时钟信号和输出分频信号的波形,发现输出信号的频率为输入信号频率的 1/4,成功实现了 4 分频功能。

FPGA实验报告整理版.doc

FPGA实验报告整理版.doc

目录实验一分频器实验三 ADC0809 模数转换实验实验二七段数码管扫描显示实验四双向移位寄存器实验一分频器一、实验目的1.学习分频器的设计,进一步了解、熟悉和掌握FPGA开发软件Quartus II 的使用方法2.学习Verilog HDL 和VHDL的编程方法3.学会使用Vector Wave功能仿真4.掌握使用多种方法分配管脚二、实验内容编写一个分频器的Verilog 代码和VHDL代码并仿真,编译下载验证三、实验原理在数字电路中,时钟信号的分频是很常见的电路。

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

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

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

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

分频器设原理框图如图1所示:图1 分频器原理图从原理图中可见,核心板的时钟是50MHz ,通过sel[1:0]选择分频数,00:不分频;01:12.5M分频;10:25M四分频;11:50M分频。

采用SW1 ‐SW2 设置分频值,SW3 复位。

LED1为时钟的输出,通过调整SW1 、SW2 ,可以得到不同的闪烁频率。

引脚分配情况如表1所示表1 引脚分布情况四、实验步骤1.新建工程,取名为frediv ,如下图2所示。

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

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

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

图3 顶层模块图5.保存文件,使用qsf或者tcl 进行管脚分配(相应的文件在本工程里面都可以找到)。

FPGA实验报告7__1HZ分频器783

FPGA实验报告7__1HZ分频器783

FPGA实验报告7__1HZ分频器Lab 7 1HZ分频器设计集成1101班1.实验目的熟悉用Quartus编译Verilog语言的方法。

掌握用Verilog HDL 语言描述分频器的方法。

学会FPGA I/O引脚分配和实现过程。

2.实验内容a)使用Verilog语言实现分频器。

b)得到仿真波形。

c)使用DE0开发板下载。

3.代码分析输入50MHZ时钟信号CP和控制信号CR,输出Q,Q有两种状态:0和1。

用reg型变量CT实现计数,当CT=25M 时,Q翻转,实现把50MHZ信号转变成1HZ的功能。

module fenpin (CP,CR,Q);input CP,CR;output Q;reg [31:0] CT;reg Q;always @(posedge CP or negedge CR)beginif (~CR) CT<=32'd0;else if (CT>=32'd2*******)beginCT<=32'd0;Q=~Q;endelse CT<=CT+1'd1;endendmodule4.实验步骤(1)打开Quartus9.1软件,选择“File=>New Project Wizard”,在弹出的窗口中输入项目的名称和存储位置。

(2)单击两次Next后,选择实验板的具体型号。

(3)在“File=>New”的窗口中选择建立Verilog文件。

(4)单击OK后,在Quartus窗口的右方看到该文件,写入代码后选择“File=>Save”,将文件保存在与项目文件同样的位置即可。

然后可以看到如下状态:(5)选择“Processing=》Start Compilation”开始编译,编译通过后可以查看生成的Report。

(6)选择“file->new->vector waveeform file”生成波形图,设置波形。

基于FPGA技术的16位数字分频器的设计

基于FPGA技术的16位数字分频器的设计

降沿触发的计数,其过程与上升沿触发的完全相同,以
该分频器具有设计简单,用途广泛,成本低廉的优点。
此循环下去将得到另外一个输出信号CLK2。最后将
2 分频原理
这两个信号进行或运算即得到最后的占空比为50% 的N倍奇数分频信号。采用这种方法可以实现任意 奇数倍分频。
2.1偶数倍分频原理 偶数倍分频原理为:当进行占空比为50%的N倍
Design of sixteen bits digital frequency divider based on FPGA
Du Gang Sun Chao Chen Anjun (Harbin Institute of Technology Harbin 150001,China)
Abstract In many designs of test and measure circuits,frequency divider is used very continually.This paper presents a design method of sixteen bits digital frequency divider based on FPGA.This divider can divide the input signal’S frequency with arbitrary integer and equal duty ratio in the range of 0~65535,which has some merits,such
奇数分频时,可以通过由待分频的信号去触发计数器
频器。分频器是一种基本电路,通常用来对某个给定
计数。首先进行上升沿触发的计数,当计数器从0计
频率进行分频,以得到所需的频率。根据不同设计的

哈工大FPGA设计与应用分频器设计实验报告

哈工大FPGA设计与应用分频器设计实验报告

FPGA设计与应用分频器设计实验报告班级:1105103班姓名:郭诚学号:1110510304日期:2014年10月11日实验性质:验证性实验类型:必做开课单位:电信院学时:2学时一、实验目的1、了解Quartus II软件的功能;2、掌握Quartus II的HDL输入方法;3、掌握Quartus II编译、综合、适配和时序仿真;4、掌握Quartus II管脚分配、数据流下载方法;5、了解设计的资源消耗情况;6、掌握分频器和计数器的实现原理;7、掌握数码管的静态和动态显示原理二、实验准备(1分)2.1 EP2C8的系统资源概述逻辑单元8,256M4K RAM 块(4k比特+512校验比特) 36总的RAM比特数165,888嵌入式乘法器18锁相环PLLs 22.2 工程所用到的FPGA引脚及功能说明工程所用到的FPGA引脚及功能说明:PIN_23是时钟引脚;PIN_114 PIN_117 PIN_127 PIN_134是数码管的位选引脚;PIN_133 PIN_116 PIN_110 PIN_112 PIN_128 PIN_118 PIN_115是数码管段选信号引脚;实验所用的LED是共阴级连接2.3 数码管的动态显示原理动态显示是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O 线控制,当输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于FPGA对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

fpga实训报告

fpga实训报告

fpga实训报告一、引言FPGA(Field-Programmable Gate Array)是一种可编程逻辑集成电路,通过在硬件设计中使用现场可编程的逻辑门阵列,实现了对硬件电路的灵活配置和重构。

FPGA广泛应用于数字信号处理、通信系统、嵌入式系统等领域。

本篇报告将介绍我在FPGA实训过程中的学习和实践成果。

二、实训目标本次FPGA实训的主要目标是通过学习和实践,掌握FPGA的基本原理和设计流程。

具体的实训内容包括FPGA的基本结构、开发环境的搭建、逻辑电路的设计与实现等。

三、FPGA基本原理1. FPGA的结构FPGA由可编程逻辑单元(CLB)、输入/输出块(IOB)、全局时钟网络(GCLK)、可编程互连网络等构成。

可编程逻辑单元是FPGA的核心,用于实现逻辑功能;输入/输出块用于与外部系统进行数据交互;全局时钟网络用于传播时钟信号;可编程互连网络用于连接逻辑单元和输入/输出块。

2. FPGA的编程语言FPGA的设计可以使用硬件描述语言(HDL)进行开发。

常用的HDL语言有VHDL和Verilog,开发者可以根据需求选择适合的语言进行设计。

四、实训步骤1. 搭建开发环境在开始实训之前,需要搭建好FPGA的开发环境。

首先,安装相应的开发软件,并配置开发板的驱动程序。

接着,将开发板与计算机连接,并确认连接成功。

2. 设计逻辑电路在FPGA实训中,我首先根据实际需求设计了一组逻辑电路。

通过使用VHDL语言,我实现了数字信号的采样和滤波功能。

为了验证设计的正确性,我使用仿真工具进行了逻辑电路的模拟。

3. 烧写程序设计完成后,我将设计好的逻辑电路通过编译器生成可烧写文件。

然后,将可烧写文件烧写到FPGA芯片中,使其能够正确运行设计好的逻辑电路。

五、实训成果通过本次FPGA实训,我深入了解了FPGA的基本原理和设计流程,掌握了VHDL语言的使用,熟悉了FPGA开发环境的搭建和操作。

最终,我成功实现了一组逻辑电路的功能,并通过烧写程序在FPGA上进行了验证。

FPGA实验报告

FPGA实验报告

FPGA实验报告一、实验目的本次实验的主要目的是了解和掌握FPGA的基本原理、主要特点和应用领域,以及学习使用HDL语言进行FPGA设计和开发。

二、实验器材和软件1.实验器材:FPGA开发板、计算机;2. 实验软件:Xilinx Vivado。

三、实验内容1.FPGA基础知识学习首先,我们学习了FPGA的基本原理和主要特点。

FPGA(Field Programmable Gate Arrays)即现场可编程门阵列,是一种可在现场进行编程和重新配置的集成电路。

与常规的固定功能集成电路相比,FPGA具有灵活性和可重构性的优势,因此在各种应用领域得到广泛应用。

2.VHDL语言学习在了解了FPGA基础知识后,我们开始学习使用HDL语言进行FPGA设计和开发。

HDL(Hardware Description Language)即硬件描述语言,是一种用于描述数字电路结构和行为的语言。

在本次实验中,我们主要学习了VHDL(VHSIC Hardware Description Language)语言的基础语法和常用结构,如组合逻辑和时序逻辑。

3.FPGA设计实验基于学习的FPGA和VHDL知识,我们进行了一系列的FPGA设计实验。

首先,我们设计了一个组合逻辑电路,实现了一个两输入AND门的功能。

然后,我们设计了一个时序逻辑电路,实现了一个简单的计数器,能够在每个时钟上升沿时进行计数。

四、实验结果与分析通过实验,我们成功地实现了一个两输入AND门和一个计数器电路。

经过仿真和综合,我们验证了设计的正确性和可行性。

从实验中,我们不仅掌握了FPGA的基本原理和主要特点,也学习了使用HDL语言进行FPGA设计和开发的基本方法。

通过自己动手实验,我们加深了对FPGA的理解,并提高了自己的实践操作能力。

五、实验总结通过本次实验,我们对FPGA的基本原理和主要特点有了更深入的了解,也掌握了使用HDL语言进行FPGA设计和开发的基本方法。

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

FPGA设计与应用分频器设计实验报告班级:1105103班姓名:郭诚学号:1110510304日期:2014年10月11日实验性质:验证性实验类型:必做开课单位:电信院学时:2学时一、实验目的1、了解Quartus II软件的功能;2、掌握Quartus II的HDL输入方法;3、掌握Quartus II编译、综合、适配和时序仿真;4、掌握Quartus II管脚分配、数据流下载方法;5、了解设计的资源消耗情况;6、掌握分频器和计数器的实现原理;7、掌握数码管的静态和动态显示原理二、实验准备(1分)2.1 EP2C8的系统资源概述逻辑单元8,256M4K RAM 块(4k比特+512校验比特) 36总的RAM比特数165,888嵌入式乘法器18锁相环PLLs 22.2 工程所用到的FPGA引脚及功能说明工程所用到的FPGA引脚及功能说明:PIN_23是时钟引脚;PIN_114 PIN_117 PIN_127 PIN_134是数码管的位选引脚;PIN_133 PIN_116 PIN_110 PIN_112 PIN_128 PIN_118 PIN_115是数码管段选信号引脚;实验所用的LED是共阴级连接2.3 数码管的动态显示原理动态显示是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O 线控制,当输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于FPGA对位选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

三、代码及测试3.1 工程源代码及分析(2分)Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;Entity gcfp isport ( gc_clk : in std_logic;gc_clkout : out std_logic;gc_s7: out std_logic_vector( 6 downto 0 ); --7段码输出gc_s3: out std_logic_vector( 3 downto 0)); --4个数码管选通end;architecture one of gcfp issignal gc_L1,gc_L2,gc_L3,gc_L4,gc_L:integer; --L1,L2表示分的高低两位L3,L4表示秒的高低两位signal gc_a:std_logic_vector(26 downto 0); --用作计数signal gc_q1:std_logic; --LED灯信号signal gc_b:std_logic_vector(12 downto 0); --用作计数signal gc_q2:std_logic; --数码管扫描信号signal gc_clkout1:std_logic; --数码管扫描信号的输出signal gc_c:std_logic_vector(1 downto 0):="00"; --用于数码管选通--将时钟信号分频(27173913分频)得到频率为1.84Hz(学号为4)的输出信号,要求占空比为25%beginprocess(gc_clk)beginif gc_clk'event and gc_clk='1' thenif gc_a<6793478 thengc_a<=gc_a+1;gc_q1<='1';elsif gc_a<27173913 thengc_a<=gc_a+1;gc_q1<='0';elsegc_a <= (others=>'0');end if;end if;gc_clkout<=gc_q1;end process;--将时钟信号分频得到周期为1ms的信号作为数码管扫描信号process(gc_clk)beginif gc_clk'event and gc_clk='1' thenif gc_b<25000 thengc_b<=gc_b+1;gc_q2<=gc_q2;elsegc_b <= (others=>'0');gc_q2<=not gc_q2;end if;end if;gc_clkout1<=gc_q2;end process;--进行计数,第一、三位模10计数,第二、四位模6计数process(gc_q1)variable min_10:integer:=0;variable min:integer:=0;variable sec_10:integer:=0;variable sec:integer:=0;beginif gc_q1'event and gc_q1='1' thenif sec =9 thensec:=0;if sec_10=5 thensec_10:=0;if min=9 thenmin:=0;if min_10=5 thenmin_10:=0;elsemin_10:=min_10+1;end if;elsemin:=min+1;end if;elsesec_10:=sec_10+1;end if;elsesec:=sec+1;end if;end if;gc_L1 <= min_10;gc_L2 <= min;gc_L3 <= sec_10;gc_L4 <= sec;end process;--用1ms时钟进行模4 计数,用于数码管选通。

计00选通第一位,01选通第二位,10选通第三位,11选通第四位。

并将该位数值送给Led进行七段码译码。

process(gc_q2)beginif gc_q2'event and gc_q2 = '1' thenif gc_c ="11"thengc_c<="00";elsegc_c <= gc_c +1;end if;end if;case gc_c iswhen "00" => gc_s3 <="0001";gc_L <= gc_L4;when "01" => gc_s3 <="0010";gc_L <= gc_L3;when "10" => gc_s3 <="0100";gc_L <= gc_L2;when "11" => gc_s3 <="1000";gc_L <= gc_L1;when others => null;end case;end process;--进行七段码译码process(gc_L)begincase gc_L iswhen 0 => gc_s7 <= "0111111";when 1 => gc_s7 <= "0000110";when 2 => gc_s7 <= "1011011";when 3 => gc_s7 <= "1001111";when 4 => gc_s7 <= "1100110";when 5 => gc_s7 <= "1101101";when 6 => gc_s7 <= "1111101";when 7 => gc_s7 <= "0000111";when 8 => gc_s7 <= "1111111";when 9 => gc_s7 <= "1101111";when others => null;end case;end process;end one;以上代码为本次实验的仿真代码,主要有以下几部分组成:第一部分为实体;第二部分结构体以及各类信号;第三部分为结构体中的各类进程,主要有分频、技术、扫描、译码等部分组成;难点是数码管的计数问题,期间要考虑各种因素,避免C语言的语言逻辑;实验数据的计算:根据实验指导书所给的公式:2-0.04*学号后两位可知F=2-0.04*4=1.84Hz分频系数:N=50MHz/1.84Hz=27173913根据占空比25%可知跳跃点的数值为:N0=27173913*0.25=67934783.3 十分频计数器的仿真波形图(1分)3.4 工程SignalTap II波形图(1分)上升沿:下降沿:四、论述详述Quartus II开发流程(1分)1、打开QuartusⅡ软件;2、选择File→New Project Wizard 新建一项工程;3、单击Next进入;(任何一项设计都是一项工程Project,必须首先为此工程建立一个放置与此工程相关的所有文件的文件夹,要用英文的比如存在E/eda),之后会出现三个要填的,分别E/eda,COUNT,COUNT;单击Next进入下一个,first name不填,单击Next进入对话框。

在该对话框中指定目标器件,(我们选择的是QuickEDA核心板上用的Cyclone系列的EP1C6240C8)next一直到finish4、选择File→New ——VHDL file ,将你的编程复制进去5、File→save as(新建个文件夹用英文的)文件名一定要更改为COUNT(保持和实体一致,默认的文件名为VHDL1)6、在QuartusⅡ主界面下选择Processing→Start Compilation进行全程编译,会显示“successful”7、在QuartusⅡ主界面下选择File→New命令,打开新建文件对话框,在该对话框中选择V ector Waveform File ;8、在Nane栏内双击鼠标左键,弹出对话框。

相关文档
最新文档