哈工大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设计和开发的基本方法。

FPGA实验分析报告()

FPGA实验分析报告()

FPGA实验报告()————————————————————————————————作者:————————————————————————————————日期:武汉工程大学电气信息学院《FPGA与硬件描述语言》实验报告[ 1 ]专业班级13电信01班实验时间2015 年 10 月 12 日学生学号1304201426 实验地点4B 315学生姓名曾维颖指导教师曹新莉实验项目闪烁的LED实验类别基础实验实验学时4学时实验目的及要求1.掌握QuartusII设计电路的基本流程,熟悉VHDL程序,分别设计分频电路,LED 闪烁延时计数程序。

2.将设计好的LED闪烁电路程序下载到DEII开发板上进行实物测试。

成绩评定表类别评分标准分值得分合计上机表现按时出勤、遵守纪律认真完成各项实验内容30分报告质量程序代码规范、功能正确填写内容完整、体现收获70分说明:评阅教师:日期: 2015年月日实验内容(说明:此部分应包含:实验内容、实验步骤、实验数据与分析过程等)一、实验内容1.用VHDL语言设计分频器,得到0.1Hz——1Hz 的时钟信号;2.设计闪烁延时程序,控制发光二极管的闪烁。

二、实验方法与步骤分频电路的产生1. 分频原理:(50MHz晶振信号怎样分频成你所需要的低频信号。

)50MHz=50×100×100×100Hz,这样就需要1个50Hz分频器,3个100Hz分频器2.50分频器:源程序如下(记作cnt50)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt50 isport( clk : in std_logic;en : in std_logic;clr : in std_logic;cout: out std_logic;q : buffer std_logic_vector (5 downto 0));end cnt50;architecture one of cnt50 isbeginprocess(clk,clr) beginif clr='1' then q<="000000";elsif clk'event and clk='1' thenif en='1' then if q="110001"then q<="000000";else q<=q+1;end if;end if;end if;if q="110001"then cout<='1'; else cout<='0';end if;end process;end one;3.100分频器:(记作cnt100)源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt100 isport( clk : in std_logic;en : in std_logic;clr : in std_logic;cout: out std_logic;q : buffer std_logic_vector (6 downto 0));end cnt100;architecture one of cnt100 isbeginprocess(clk,clr) beginif clr='1' then q<="0000000";elsif clk'event and clk='1' thenif en='1' then if q="1100011"then q<="0000000";else q<=q+1;end if;end if;end if;if q="1100011"then cout<='1'; else cout<='0';end if;end process;end one;4. LED闪烁定时电路:源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt5 isport( clk : in std_logic;en : in std_logic;clr : in std_logic;cout: out std_logic;q : buffer std_logic_vector (2 downto 0));end cnt5;architecture one of cnt5 isbeginprocess(clk,clr) beginif clr='1' then q<="000";elsif clk'event and clk='1' thenif en='1' then if q="100"then q<="000";else q<=q+1;end if;end if;end if;if q="100"then cout<='1'; else cout<='0';end if;end process;end one;5. 顶层文件,将所有底层原件集成为顶层设计文件:三、实验数据与结果分析t50波形图t100波形图实验总结(说明:总结实验认识、过程、效果、问题、收获、体会、意见和建议。

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开发环境和编程工具,还实现了一些具体的应用。

分频器实验报告

分频器实验报告

分频器实验报告
《分频器实验报告》
实验目的:通过实验分频器的工作原理,了解其在电子电路中的应用。

实验器材:信号发生器、示波器、分频器、电压表、电流表、导线等。

实验原理:分频器是一种能够将输入信号按照一定的频率分成不同频率的输出
信号的电路。

在实验中,我们将使用信号发生器产生一个特定频率的信号,然
后通过分频器将其分成不同频率的输出信号,最后通过示波器观察输出信号的
波形。

实验步骤:
1. 将信号发生器的输出端连接到分频器的输入端,将分频器的输出端连接到示
波器。

2. 调节信号发生器的频率,观察示波器上的波形变化。

3. 记录不同频率下的输出波形,并测量输出信号的电压和电流。

实验结果:通过实验我们观察到,在不同频率下,分频器的输出波形呈现出不
同的频率特性,符合分频器的工作原理。

同时,我们还测量了输出信号的电压
和电流,验证了分频器的输出特性。

实验结论:分频器是一种广泛应用于电子电路中的重要器件,通过实验我们深
入了解了分频器的工作原理和特性。

在实际应用中,分频器可以用于信号处理、通信系统、音频设备等领域,具有重要的应用价值。

通过本次实验,我们不仅对分频器有了更深入的了解,同时也提高了对电子电
路原理的理解和应用能力。

希望通过今后的实验和学习,能够更加深入地掌握
电子电路的知识,为未来的科研和工程实践打下坚实的基础。

哈工大数字电子技术FPGA自主设计实验

哈工大数字电子技术FPGA自主设计实验

乐曲演奏程序1.设计目标该程序设计了一种乐曲演奏程序,利用外接蜂鸣器可实现乐曲演奏。

2.程序设计原理乐谱左上角的数字表示,以四分音符为一拍,每小节四拍。

下面的数字表示每分钟该乐曲的拍数,由于该参数不影响输出乐曲的辨识,只是使得乐曲演奏速度发生快慢,我们将该值都设定为120。

因此可以得出每拍占时间为0.5s。

乐曲中最小拍数为0.25拍,因此,我们得到最小演奏时间为0.125s,对应的频率为8Hz。

音乐简谱谱的识别方法如下:(1)每个数字代表一个音符,未加任何标注的音符,演奏时间为1拍(2)数字上方或者下方的点表示音高,上方对应高音,下方对应低音。

(3)数字右下角的点表示延时半拍。

(4)数字后方的横线表示延时1拍。

(5)数字下方的横线表示该音符时间变为原来的一半3.设计思想不同的音符对应不同的振荡频率,因此我们可以控制某个输出脚按照乐谱在特定时长内输出特定频率,以达到乐曲演奏的目的。

整体系统框图如下:查找资料,不同音调对应频率关系如下:本设计采用如下程序设计由预置数决定的分频器:always@(posedge clk_6mhz)beginif(divider==A)begincarry<=1;divider<=B;endelsebegindivider<=divider+1;carry<=0;endend所得到的分频数为N=A+B-1。

为了便于计数,选择A=2^14-1=16383,考虑到二分频方波整形电路,因此4.设计内容与具体方案(1)歌谱如下(2)源程序module song(clk50m,speaker,high_7s,med_7s,low_7s);input clk50m;output reg speaker;output[6:0] high_7s;output[6:0] med_7s;output[6:0] low_7s;reg clk6mhz;reg clk_8hz;reg[13:0] divider,origin;reg carry;reg[7:0] counter;reg[3:0] high,med,low;reg[2:0] count8;reg[19:0] count20;always@(posedge clk50m)beginif(count8==7)begincount8<=0;clk_6mhz<=1;endelsebegincount8<=count8+1;clk_6mhz<=0;endendalways@(posedge clk_6mhz)beginif(count20==390625)//781250beginclk_8hz=~clk_8hz;count20<=0;endelsecount20<=count20+1;endalways@(posedge clk_6mhz)beginif(divider=16383)begincarry<=1;divider<=origin;endelsebegindivider<=divider+1;carry<=0;endendalways@(posedge carry)beginspeaker=~speaker;endalways@(posedge clk_8hz) begincase({high,med,low})'h001:origin<=4915;'h002:origin<=6168;'h003:origin<=7281;'h004:origin<=7792;'h005:origin<=8703;'h006:origin<=9565;'h007:origin<=10310;'h010:origin<=10647;'h020:origin<=11272;'h030:origin<=11831;'h040:origin<=12094;'h050:origin<=12556;'h060:origin<=12974;'h070:origin<=13346;'h100:origin<=13516;'h200:origin<=13829;'h300:origin<=14109;'h400:origin<=14235;'h500:origin<=14470;'h600:origin<=14678;'h700:origin<=14864;'h000:origin<=16383;endcaseendalways@(posedge clk_8hz) beginif(counter==127)counter<=0;elsecounter<=counter+1;case(counter)0:{high,med,low}<='h010; 1:{high,med,low}<='h010; 2:{high,med,low}<='h010; 3:{high,med,low}<='h010; 4:{high,med,low}<='h020; 5:{high,med,low}<='h020; 6:{high,med,low}<='h020; 7:{high,med,low}<='h020;8:{high,med,low}<='h030; 9:{high,med,low}<='h030; 10:{high,med,low}<='h030; 11:{high,med,low}<='h030;12:{high,med,low}<='h010; 13:{high,med,low}<='h010; 14:{high,med,low}<='h010; 15:{high,med,low}<='h010; //16:{high,med,low}<='h010; 17:{high,med,low}<='h010; 18:{high,med,low}<='h010; 19:{high,med,low}<='h010;20:{high,med,low}<='h020; 21:{high,med,low}<='h020; 22:{high,med,low}<='h020; 23:{high,med,low}<='h020;24:{high,med,low}<='h030; 25:{high,med,low}<='h030; 26:{high,med,low}<='h030; 27:{high,med,low}<='h030; 28:{high,med,low}<='h010; 29:{high,med,low}<='h010; 30:{high,med,low}<='h010; 31:{high,med,low}<='h010; //32:{high,med,low}<='h030; 33:{high,med,low}<='h030; 34:{high,med,low}<='h030; 35:{high,med,low}<='h030; 36:{high,med,low}<='h040; 37:{high,med,low}<='h040; 38:{high,med,low}<='h040; 39:{high,med,low}<='h040;40:{high,med,low}<='h050; 41:{high,med,low}<='h050; 42:{high,med,low}<='h050; 43:{high,med,low}<='h050;44:{high,med,low}<='h050; 45:{high,med,low}<='h050; 46:{high,med,low}<='h050; 47:{high,med,low}<='h050; //48:{high,med,low}<='h030; 49:{high,med,low}<='h030; 50:{high,med,low}<='h030; 51:{high,med,low}<='h030;52:{high,med,low}<='h040; 53:{high,med,low}<='h040; 54:{high,med,low}<='h040; 55:{high,med,low}<='h040;56:{high,med,low}<='h050; 57:{high,med,low}<='h050; 58:{high,med,low}<='h050; 59:{high,med,low}<='h050; 60:{high,med,low}<='h050; 61:{high,med,low}<='h050; 62:{high,med,low}<='h050; 63:{high,med,low}<='h050; //64:{high,med,low}<='h050; 65:{high,med,low}<='h050; 66:{high,med,low}<='h050; 67:{high,med,low}<='h060; 68:{high,med,low}<='h050; 69:{high,med,low}<='h050; 70:{high,med,low}<='h050; 71:{high,med,low}<='h040;72:{high,med,low}<='h030; 73:{high,med,low}<='h030; 74:{high,med,low}<='h030; 75:{high,med,low}<='h030; 76:{high,med,low}<='h010; 77:{high,med,low}<='h010; 78:{high,med,low}<='h010;//80:{high,med,low}<='h050; 81:{high,med,low}<='h050; 82:{high,med,low}<='h050; 83:{high,med,low}<='h060;84:{high,med,low}<='h050; 85:{high,med,low}<='h050; 86:{high,med,low}<='h050; 87:{high,med,low}<='h040;88:{high,med,low}<='h030; 89:{high,med,low}<='h030; 90:{high,med,low}<='h030; 91:{high,med,low}<='h030; 92:{high,med,low}<='h010; 93:{high,med,low}<='h010; 94:{high,med,low}<='h010; 95:{high,med,low}<='h010; //96:{high,med,low}<='h010; 97:{high,med,low}<='h010; 98:{high,med,low}<='h010; 99:{high,med,low}<='h010; 100:{high,med,low}<='h050; 101:{high,med,low}<='h050; 102:{high,med,low}<='h050; 103:{high,med,low}<='h050;104:{high,med,low}<='h010; 105:{high,med,low}<='h010; 106:{high,med,low}<='h010; 107:{high,med,low}<='h010; 108:{high,med,low}<='h010; 109:{high,med,low}<='h010; 110:{high,med,low}<='h010; 111:{high,med,low}<='h010; //112:{high,med,low}<='h010; 113:{high,med,low}<='h010;115:{high,med,low}<='h010;116:{high,med,low}<='h050; 117:{high,med,low}<='h050; 118:{high,med,low}<='h050; 119:{high,med,low}<='h050;120:{high,med,low}<='h010; 121:{high,med,low}<='h010; 122:{high,med,low}<='h010; 123:{high,med,low}<='h010; 124:{high,med,low}<='h010; 125:{high,med,low}<='h010; 126:{high,med,low}<='h010; 127:{high,med,low}<='h010;default:{high,med,low}<='h000; endcaseendled7s u1(high,high_7s);led7s u2(med,med_7s);led7s u3(low,low_7s); endmodule(3)引脚锁定(4)实验结果编译得到RTL图如下:。

哈尔滨工程大学FPGA第二次案例课实验报告

哈尔滨工程大学FPGA第二次案例课实验报告

哈尔滨工程大学电子系统设计(FPGA)实验报告班级:学号:姓名:手机:评阅教师签字:20年月日一、 设计选题及技术要求实验任务:完成AM 信号产生功能,具体要求如下: (1)载波信号频率范围:1M-10MHz ,分辨率0.01MHz ;(2)调制信号为单频正弦波信号,频率范围:1kHz-10kHz ,分辨率0.01kHz ; (3)调制深度0-1.0,步进0.1,精度优于5%;(4)载波信号位宽__8__位,调制信号位宽__8__位,输出AM 信号位宽__16__位;(5)载波信号频率、调制信号频率和调制深度由VIO 控制,输出信号利用ILA 进行观察,观察数据长度为__2048__;(6)仿真时设置载波信号频率__10__MHz ,调制信号频率__10__kHz ,调制深度__1__;(7)完成仿真测试和硬件调试验证。

二、 方案设计及原理分析(一) 原理分析幅度调制(AM )是正弦载波的幅度随调制信号作线性变化的过程。

AM 已调信号的时域表达式:t t m A t S c ωcos )]([)(0+= 式⑴ 本质上AM 调制就是频谱的搬移。

AM 已调信号的频域表达式:)]()([)]()([)(210c c c c M M A S ωωωωωωδωωδπω-+++-++= 式⑵(二) 总体方案设计图一 硬件原理总框图dds IP 核生成传输信号和载波信号,传输信号乘调制深度然后与直流分量相加,并与载波信号相乘,输出调制信号。

图二软件原理总框图在测试文件中写入不同的频率控制字使dds IP核产生相应的载波信号和传输信号以及直流分量,传输信号乘调制深度然后与直流分量相加,并与载波信号相乘,输出调制信号。

三、程序分析及设计(4分)图三总程序流程图module xbl(input wire sysclk, //定义系统时钟input wire [19:0] plkzz_1, //传输信号频率控制字input wire [13:0] plkzz_2, //载波信号频率控制字output reg [15:0] tiaozhi //调制信号位宽16位);//wire [19:0] plkzz_1;//wire [13:0] plkzz_2;//reg [15:0] tiaozhi;//wire [4:0] ma;reg [4:0] ma=5'd10; //设置调制系数1always @(posedge sysclk ) beginbegintiaozhi <= mul2 [19:4]; //调制信号位宽截取16位endendwire clk10mhz; //定义时钟10MHzwire [11:0] Um=12'd1280; //定义直流分量wire [7:0] out_k; //定义dds输出正弦波调制信号wire [7:0] out_M; //定义dds输出正弦波载波信号wire [12:0] add; //加法器输出位宽13位wire [12:0] mult1; //乘法器1输出位宽13位wire [20:0] mul2; //乘法器2输出位宽21位xbl_clk xbl_clk(.clk_out1(clk10mhz),.clk_in1(sysclk));// xbl_ila xbl_ila (// .clk(sysclk), //系统时钟提供时钟信号// .probe0(tiaozhi) //利用ILA观察输出信号// );//vio_0 vio_0 (// .clk(sysclk), //系统时钟提供时钟信号// .probe_out0(plkzz_2), //利用VIO观察载波信号频率// .probe_out1(plkzz_1), //利用VIO观察调制信号频率// .probe_out2(ma) //利用VIO观察调制深度//);wire fre_word_en;assign fre_word_en = 1'b1;xbl_dds_k xbl_dds_k (.aclk(clk10mhz),.s_axis_config_tvalid(fre_word_en),.s_axis_config_tdata(plkzz_1),//.m_axis_data_tvalid(m_axis_data_tvalid),.m_axis_data_tdata(out_k) //通过dds IP核产生调制信号);xbl_dds_M xbl_dds_M (.aclk(sysclk),.s_axis_config_tvalid(fre_word_en),.s_axis_config_tdata(plkzz_2),//.m_axis_data_tvalid(m_axis_data_tvalid),.m_axis_data_tdata(out_M) //通过dds IP核产生载波信号);xbl_add xbl_add (.A(Um),.B(mult1),.CLK(sysclk),.S(add) //加法器输出);xbl_mult1 xbl_mult1 (.CLK(sysclk),.A(ma),.B(out_k),.P(mult1) //乘法器1输出);xbl_mult2 xbl_mult2 (.CLK(sysclk),.A(add),.B(out_M),.P(mul2) //乘法器2输出);endmodule(一)子模块1程序设计时钟分频模块:将100MHz系统时钟分成10MHz时钟xbl_clk xbl_clk(.clk_out1(clk10mhz),.clk_in1(sysclk));(二)子模块2程序设计通过dds IP核产生调制信号和载波信号:wire fre_word_en;assign fre_word_en = 1'b1;xbl_dds_k xbl_dds_k (.aclk(clk10mhz),.s_axis_config_tvalid(fre_word_en),.s_axis_config_tdata(plkzz_1),//.m_axis_data_tvalid(m_axis_data_tvalid),.m_axis_data_tdata(out_k) //通过dds IP核产生调制信号);xbl_dds_M xbl_dds_M (.aclk(sysclk),.s_axis_config_tvalid(fre_word_en),.s_axis_config_tdata(plkzz_2),//.m_axis_data_tvalid(m_axis_data_tvalid),.m_axis_data_tdata(out_M) //通过dds IP核产生载波信号);(三)子模块3程序设计加法器、乘法器1和乘法器2的实现:xbl_add xbl_add (.A(Um),.B(mult1),.CLK(sysclk),.S(add) //加法器输出);xbl_mult1 xbl_mult1 (.CLK(sysclk),.A(ma),.B(out_k),.P(mult1) //乘法器1输出);xbl_mult2 xbl_mult2 (.CLK(sysclk),.A(add),.B(out_M),.P(mul2) //乘法器2输出);(四)顶层模块程序设计## Clock Signalset_property -dict {PACKAGE_PIN R4 IOSTANDARD LVCMOS33} [get_ports sysclk] //系统时钟信号(五)测试程序设计我们设定传输信号频率控制字20位,载波信号频率控制字14位,载波dds IP 核的时钟位系统预置时钟100MHz,传输信号的dds IP核的时钟为10MHz。

fpga 实验报告

fpga 实验报告

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

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

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

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

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

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

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

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

5.下载到 FPGA 开发板上。

6.测试电路功能。

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

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

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

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

FPGA实训报告

FPGA实训报告

1.FPGA硬件系统设计1.1 功能要求利用所给器件:一个8位拨码开关(见图1-1),排针40×1,芯片DAC0832×1, 芯片LM358×1,一个电位器构成硬件电路,实现与FPGA相连,输出正弦波,三角波,锯齿波,方波。

(图1-1)1.2FPGA硬件系统组成(见图1-2)(图1-2)FPGA框架结构由三部分组成:可编程输入/输出模块I/OB (I/O Block)——I/OB:位于芯片内部四周,主要由逻辑门、触发器和控制单元组成。

在内部逻辑阵列与外部芯片封装引脚之间提供一个可编程接口。

可配置逻辑模块CLB (Configurable Logic Block)——CLB:是FPGA的核心阵列,用于构造用户指定的逻辑功能,不同生产厂商的FPGA器件其不同之处主要在核心阵列。

每个CLB主要由查找表LUT(Look Up Table)、触发器、数据选择器和控制单元组成。

可编程内部连线PI (Programmable Interconnect) ——PI:位于CLB之间,用于传递信息。

编程后形成连线网络,提供CLB之间、CLB与I/OB之间的连线。

1.3FPGA最小系统简介(见图1-3)(图1-3)1.3.1 FPGA 最小系统板(见图1-4)(图1-4)1.3.2 下载接口Alter 提供常用的编程连接电缆有4种: (1)Byte Blaster 配置电缆 (2)Byte Blaster MV 配置电缆(3)Master Blaster/USB 配置电缆(USB – Blaster )(4)Bit Blaster配置电缆串口连接时编程电缆选择:可以选择Bit Blaster或Master Blaster配置电缆;并口连接时编程电缆选择:可以选择Byte Blaster或Byte Blaster MV配置电缆;USB连接时编程电缆选择:选择Master Blaster配置电缆。

FPGA实验报告

FPGA实验报告

电气技术实践可编程逻辑器件FPGA应用开发实验报告2016年12月目录一、实验目的二、实验要求三、实验内容四、实验代码及实验结果(1)4位二进制加法计数器(2)半加器(3)LED静态显示(4)38译码器(5)点阵扫描显示(6)步进电机状态机五、实验感想六、学习并使用FPGA的心得与体会七、电气技术实践总结一、实验目的1、熟悉使用可编程逻辑器件(Altera公司FPGA Cyclone系列EP1C6Q)。

2、熟悉使用硬件描述语言VHDL。

3、掌握FPGA集成环境(Altera公司FPGA QuartusII 开发流程。

4、熟悉使用核心目标系统板与接口电路等工作原理及其功能模块绑定信息。

5、熟悉并掌握下载线方式和下载文件的选择。

二、实验要求1、学习并掌握文本、图形等输入和时序、功能仿真方法。

2、学习并熟悉门电路、组合电路、时序电路等单一模块功能。

3、学习并设计各种不同状态机逻辑功能。

4、学习并设计由单一模块→较多功能模块集成→系统集成方法。

5、学习并选择多种模式显示(发光二极管显示、米字型数码管显示、七段数码管→动态扫描或静态扫描显示、LED点阵显示各种字符和图形或静止或移动等方式、LCD液晶显示各种字符和图形或静止或移动等方式)。

6、根据自已的兴趣和愿望,可从以下给定的实验目录中选取或自已设定功能题目。

7、实验数目没有要求,关键是看质量,是否是自已编写、调试、实现。

三、实验内容1、按指导书集成开发环境章节操作实现文本编程实例1和图形编程实例2全过程。

2、任选门电路、组合电路、时序电路实验各完成一个其逻辑功能,其实现方案自已规定。

在进行FPGA目标器件输入和输出引脚绑定时,输入引脚绑定高/低电平、单脉冲、各种分频连续脉冲等多种信号,输出引脚可绑定发光二极管、七段数码管、LED点阵等显示模式。

3、在完成1位十进制计数器的基础上,可增加完成2或3等多位十进制计数器逻辑功能并用多位七段数码管来显示。

4、根据状态机工作特点,设计一个有一定功能效果的例程。

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的分频器的设计与实现摘要:在数字逻辑电路设计中,分频器通常用来对某个给定频率进行分频,以得到所需的频率。

整数分频器的实现采用标准的计数器,也可采用可编程逻辑器件实现。

有时,时钟源与所需的频率不成整数倍关系可采用小数分频器进行分频。

本文在模拟设计频率计脉冲信号时,使用半整数分频器设计电路,且利用VHDL硬件描述语言和原理图输入方式,通过Quartus II以及EPM240T100C5型FPGA方便地完成了半整数分频器电路的设计。

关键词:FPGA;QUARTUSⅡ;VHDL语言;分频器中图分类号:G64 文献标识码:A 文章编号:1673-9132(2016)25-0023-02DOI:10.16657/ki.issn1673-9132.2016.25.013一、分频器的基本原理(一)整数分频的基本原理整数分频包含偶数分频和奇数分频,对于偶数N分频通常使用N/2计数器实现占空比为1:1的N分频器,分频输出信号模为N\2自动取反;对于奇数分频必须分频输出信号为模N计数中的一位[1]。

整数分频器的实现,采用可编程逻辑器件设计实现,当时钟源与所需的频率不成整数倍关系,此时可采用小数分频器进行分频。

(二)小数分频的基本原理小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值,分频系数为N-0.5(N为整数)时,可控制扣除脉冲的时间,以使输出成为一个稳定的脉冲频率,而不是一次N分频,一次N-1分频[2]。

二、实验目的使用Quartus II仿真软件,使用半整数分频的方式,通过VHDL语言将整个分频器各个模块的编写使用FPGA实现分频器的整个设计和实现,通过分频器的设计实现掌握基本的整数分频和小数分频的原理,加强对硬件语言的理解,以及对使用组合电路设计复杂器件的能力[3]。

三、设计过程1.运行Quartus II,新建立一个工程,器件选择EPM240T100C5新片,完成新工程的建立[4]。

FPGA课程设计实验报告

FPGA课程设计实验报告

FPGA课程设计实验报告1. 引言本报告是针对FPGA课程设计实验的实验结果进行总结和分析。

该实验旨在通过设计一个FPGA应用电路,加深对FPGA的理论知识的理解,并提高对FPGA设计流程的掌握能力。

本实验采用Verilog硬件描述语言进行FPGA设计。

2. 实验目的本实验的主要目的有以下几点: - 通过设计一个FPGA应用电路,提高对FPGA的理论知识的理解。

- 熟悉FPGA设计流程,掌握使用Verilog语言进行FPGA设计的方法。

- 掌握FPGA设计的仿真、综合和下载的流程。

- 提高对FPGA设计中时序约束的理解和处理能力。

3. 实验环境和工具本实验的实验环境和工具如下: - FPGA开发板:Xilinx Spartan-6 - FPGA设计工具:Xilinx ISE Design Suite - 仿真工具:Xilinx ISIM4. 实验设计本实验设计了一个简单的FPGA应用电路,实现了一个4位计数器。

该计数器能够从0递增到15,然后重新从0开始计数。

计数器的递增频率可通过外部开关调节,同时采用七段数码管显示当前计数器的值。

4.1 电路结构实验设计的电路结构如下所示:电路结构图电路结构图该电路包含以下模块: - 时钟模块:用于提供递增计数器的时钟信号。

- 计数器模块:实现了一个4位计数器,并能够从0递增到15。

- 控制模块:用于控制外部开关的输入,并将结果输出到七段数码管的控制端口。

- 七段数码管模块:用于将计数器的值以七段数码管的形式显示出来。

4.2 Verilog代码根据电路结构图,我们编写了如下的Verilog代码:module counter(input wire clk,input wire reset,output wire [6:0] seg,output wire seg_en);reg [3:0] count;always @(posedge clk or posedge reset)beginif (reset)count <= 4'b0000;else if (count == 4'b1111)count <= 4'b0000;elsecount <= count + 1;endassign seg = count;assign seg_en = 1'b1;endmodule5. 实验过程5.1 仿真在进行实际FPGA设计之前,我们首先对设计的Verilog代码进行仿真,以验证其功能的正确性。

哈工大电信学院FPGA实验4

哈工大电信学院FPGA实验4

FPGA设计与应用(7, 4)汉明编译码实验报告班级:1105102班姓名:学号:1110510216日期:2013年10月22 日实验性质:验证性 实验类型:必做 开课单位:电信院学时:2学时一、实验目的1、了解线性分组码的基本原理;2、掌握汉明码的编码和译码方法;3、掌握利用串口通信配合进行编解码测试的方法; 二、实验准备(1分)2.1 (7, 4)汉明码的编译码基本原理答:一般来说,若汉明码长为n ,信息位数为k ,则监督位数r=n-k 。

若希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求n r ≥-12 或 112++≥-r k r (1) 下面以(7,4)汉明码为例说明原理:设汉明码(n,k )中k=4,为了纠正一位错码,由式(1)可知,要求监督位数r≥3。

若取r=3,则n=k+r=7。

我们用0123456a a a a a a a 来表示这7个码元,用321S S S 的值表示3个监督关系式中的校正子,则321S S S 的值与错误码元位置的对应关系可以规定如表1所列。

则由表1可得监督关系式:34501456123462a a a a S a a a a S a a a a S ⊕⊕⊕=⊕⊕⊕=⊕⊕⊕=(2)在发送端编码时,信息位3456a a a a 的值决定于输入信号,因此它们是随机的。

监督位2a 、1a 、0a 应根据信息位的取值按监督关系来确定,即监督位应使式(2)~式(4)中1S 、2S 、3S 的值为0(表示编成的码组中应无错码)345045613462a a a a a a a a a a a a ⊕⊕=⊕⊕=⊕⊕= (3)当数字信号编码成汉明码形式(本文中即A )后在信道中传输,由于信道中噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。

监督位计算结果:2.2 (7, 4)汉明码编码程序的仿真验证2.3 (7, 4)汉明码解码程序的仿真验证可以看出来时a6错了,将其纠正即可。

  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栏内双击鼠标左键,弹出对话框。

相关文档
最新文档