ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:854.25KB ,
资源ID:27341912      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27341912.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FPGA实训报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

FPGA实训报告.docx

1、FPGA实训报告1.FPGA硬件系统设计1.1 功能要求利用所给器件:一个8位拨码开关(见图1-1),排针401,芯片DAC08321, 芯片LM3581,一个电位器构成硬件电路,实现与FPGA相连,输出正弦波,三角波,锯齿波,方波。(图1-1)1.2FPGA硬件系统组成(见图1-2)(图1-2)FPGA框架结构由三部分组成:可编程输入/输出模块I/OB (I/O Block) I/OB:位于芯片内部四周,主要由逻辑门、触发器和控制单元组成。在内部逻辑阵列与外部芯片封装引脚之间提供一个可编程接口。可配置逻辑模块CLB (Configurable Logic Block)CLB:是FPGA的核心

2、阵列,用于构造用户指定的逻辑功能,不同生产厂商的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、配置电缆(3)Master Blaster/USB配置电缆(USB Blaster)(4)Bit Blaster配置电缆串口连接时编程电缆选择:可以选择Bit Blaster或Master Blaster配置电缆;并口连接时编程电缆选择:可以选择Byte Blaster或Byte Blaster MV配置电缆;USB连接时编程电缆选择:选择Master Blaster配置电缆。Byte Blaster MV配置:下载电缆通过PC机并口将编程数据配置到FPGA中,与PC机并口相连的是25针插头,与PCB板相连的是10针插头。提供APS方式和JTAG方式两种下载方式,APS方式用于Cyclone、

4、APEX、APEX20K、APE X l K、Mercury、Excalibur、FLEXl0K、FLEX8000和FLEX6000等器件的配置;JTAG方式用于编程或配置含有JTAG接口的芯片。本次实验验选择APS口(如图1-5)(图1-5)1.4FPGA外围电路设计1.4.1 拨码开关电路设计(如图1-6)(图1-6)共有8个开关,K1,K2控制波形(正弦波,三角波,锯齿波,方波),K3K8控制频率变换。本实验中开关一端与FPGA相连,另一端与电源相连,但是这样做不安全,会影响FPGA,因而在开关与电源之间接一个电阻,实验中用了一个330*8的排阻,电源脚(1)接+3.3V。每个开关流过电

5、流为3.3 330=10mA 。1.4.2 DAC0832电路设计1.4.2.1 DAC0832芯片简介DAC0832是采用CMOS/Si-Cr工艺实现的8位D/A转换器,转换周期为1s。该芯片包含8位输入寄存器、8位DAC寄存器、8位D/A转换器。DAC0832中有两级锁存器,第一级即输入寄存器,第二级即DAC寄存器,可以工作在双缓冲方式下。 1.4.2.2 DAC0832芯片框图与引脚图 (如图1-7)(图1-7) 引脚特性:1.D7D0:8位数据输入端2.ILE:输入寄存器锁存允许信号3.CS#:芯片选择信号4.WR1#:输入寄存器写信号5.XFER#:数据传送信号6.WR2#:DAC寄

6、存器写信号7.VREF:基准电压,-10V+10V8.Rfb:反馈信号输入端9.IOUT1:电流输出1端10.IOUT2:电流输出2端11.VCC:电源12.AGND:模拟地13.DGND:数字地 1.4.2.2 DAC0832的三种工作方式 (如图1-8)双缓冲 单缓冲 直通 (图1-8)本实验DAC0832的工作方式为直通。 1.4.2.3 FPGA与DAC0832接口电路原理图 (如图1-9)(图1-9)分析: D7D0:与FPGA对应接口相连;CS# 、WR1#、WR2#、 XFER#、AGND、DGND相连接地,构成直通工作方式;VREF、VCC、ILE接+5V;IOUT1,IOUT

7、2分别接运放负端,正端;Rfb加一电位器与运放输出相连,作为输出。DAC0832是电流型输出器件,因此需要加一个运放,实验中用到LM358。1.4.3LM358电路介绍1.4.3.1LM358芯片简介LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。1.4.3.2LM358芯片引脚图(如图1-10)(图1-10)1.4.3.3 LM358的工作方式 LM358内部有2个运算放大器,因此

8、可以使用单运放,也可以使用双运放,本实验中采用单运放。1.5硬件电路调试及结果分析结果如图(1-11)(图1-11)分析:设计了一个正弦波,但是调试后发现有非常大的毛刺,之后检查发现时由于相位控制字未锁定造成,后已解决。2.基于DDS技术的信号发生器设计2.1 功能要求利用频率合成技术,使某一(或多个)基准频率,通过一定的变换与处理后,形成一系列等间隔的离散频谱;根据特定公式取点,在Quartus软件进行仿真,经过USB Blaster在APS口下载到FPGA板上,再与硬件连接,在示波器观察波形及其参数的过程。2.2 整体设计如图(2-1)(图2-1)2.3 DDS技术的基本原理2.3.1频率

9、合成技术频率合成技术:利用频率合成的方法,使某一(或多个)基准频率,通过一定的变换与处理后,形成一系列等间隔的离散频谱。2.3.2 DDS技术简介直接数字频率合成器(DDS)是一种基于全数字技术,从相位概念出发直接合成所需波形的一种频率合成技术,它是目前最为典型、应用最广泛的一种频率合成技术。它工作频率范围很宽;极短的频率转换时间;极高的频率分辨力;有任意波形输出能力;数字调制性能好等优点。2.3.3 DDS基本结构如图(2-2)(图2-2)2.4 程序设计2.4.1 正弦波产生程序设计及仿真(1) 程序的功能:实现正弦波输出(2) 编程方式用c语言编程,导出1024 个点,形成.mif文件,

10、正弦波的公式为 ,其中 C程序为:#include#includemain( ) int i;float s;for(i=0;i1024;i+) s=sin(atan(1)*8*i/1024);printf(%d : %d; n,i,(int)(s+1)*1023/2); (3) 结构图或实体图如图(2-3)(图2-3)(4) 仿真波形及分析如图(2-4)(图2-4)此图为每个点的数据具体波形图如图(2-5)(图2-5)2.4.2 三角波产生程序设计及仿真(1) 程序的功能:实现三角波输出(2) 结构图或实体图如图(2-6)(图2-6)(3) 仿真波形及分析如图(2-7)此图为每个点的数据(图

11、2-7)具体波形图如图(2-8)(图2-8)2.4.3 锯齿波产生程序设计及仿真(1) 程序的功能:实现锯齿波输出(2) 结构图或实体图如图(2-9)(图2-9)(3) 仿真波形及分析如图(2-10)此图为每个点的数据(图2-10)具体波形图如图(2-11)(图2-11)2.4.4 方波产生程序设计及仿真(1) 程序的功能:实现方波输出(2) 编程方式mif文件手动输入,0,-1输入(3) 结构图或实体图如图(2-12)(图2-12)(4) 仿真波形及分析如图(2-13)此图为每个点的数据(图2-13)具体波形图如图(2-14)(图2-14)2.4.5 顶层程序设计及仿真(1) 程序的功能拨动

12、开关1,2 ,输出四种不同波形,分别为正弦波(K1=0,K2=0),三角波(K1=0,K2=1),锯齿波(K1=1,K2=0),方波(K1=1,K2=1);剩下六个开关控制频率,频率范围为50Hz3000 Hz,每个开关控制50 Hz频率。(2) 结构图或实体图如图(2-15)(图2-15)(3) VHDL程序及注释DDS顶层设计LIBRARY IEEE; -DDS顶层设计USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DDS_VHDL IS PORT ( CLK : IN STD_LOGIC; sel :

13、IN STD_LOGIC_VECTOR(1 DOWNTO 0); FWORD : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -频率控制字 PWORD : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -相位控制字 FOUT : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END;ARCHITECTURE one OF DDS_VHDL IS COMPONENT fenpin PORT ( clk : IN STD_LOGIC; clk1 : OUT STD_LOGIC ); END COMPONENT; COMPONENT

14、 REG10B PORT ( LOAD : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(9 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END COMPONENT; COMPONENT ADDER10B PORT ( A : IN STD_LOGIC_VECTOR(9 DOWNTO 0); B : IN STD_LOGIC_VECTOR(9 DOWNTO 0); S : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END COMPONENT; COMPONENT my

15、rom1 PORT ( address : IN STD_LOGIC_VECTOR(9 DOWNTO 0); clock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END COMPONENT; COMPONENT fangbo PORT ( clock:IN std_logic;-复位信号reset, 时钟信号clk address:in std_logic_vector(9 DOWNTO 0); q:OUT std_logic_vector(9 DOWNTO 0) ); END COMPONENT; COMPONENT j

16、uchibo PORT ( clock:IN std_logic;-复位信号reset, 时钟信号clk address:in std_logic_vector(9 DOWNTO 0); q:OUT std_logic_vector(9 DOWNTO 0) ; END COMPONENT; COMPONENT sanjiaobo PORT ( clock:IN std_logic;-复位信号reset, 时钟信号clk address:in std_logic_vector(9 DOWNTO 0); q:OUT std_logic_vector(9 DOWNTO 0) ; END COMPON

17、ENT; COMPONENT chiose PORT ( c1,c2,c3,c4:IN std_logic_vector(9 DOWNTO 0);-复位信号reset, 时钟信号clk cho:in std_logic_vector(1 DOWNTO 0); q:OUT std_logic_vector(9 DOWNTO 0) ); END COMPONENT; COMPONENT xuanpin PORT (clk : IN STD_LOGIC; clk1: OUT STD_LOGIC; f1 : in STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONEN

18、T; COMPONENT sudu PORT ( clk : IN STD_LOGIC; out1 : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END COMPONENT;SIGNAL F10B: STD_LOGIC_VECTOR(9 DOWNTO 0); SIGNAL D10B: STD_LOGIC_VECTOR(9 DOWNTO 0); SIGNAL DIN10B: STD_LOGIC_VECTOR(9 DOWNTO 0);SIGNAL P10B : STD_LOGIC_VECTOR( 9 DOWNTO 0);SIGNAL LIN10B : STD_LOGI

19、C_VECTOR( 9 DOWNTO 0);SIGNAL SIN10B : STD_LOGIC_VECTOR( 9 DOWNTO 0);SIGNAL cc1 : STD_LOGIC_VECTOR( 9 DOWNTO 0);SIGNAL cc2 : STD_LOGIC_VECTOR( 9 DOWNTO 0);SIGNAL cc3 : STD_LOGIC_VECTOR( 9 DOWNTO 0);SIGNAL cc4 : STD_LOGIC_VECTOR( 9 DOWNTO 0);SIGNAL clk11 : STD_LOGIC;SIGNAL clk12 : STD_LOGIC;SIGNAL out

20、11: STD_LOGIC_VECTOR( 9 DOWNTO 0);BEGIN F10B( 9 DOWNTO 8)=00 ; F10B( 7 DOWNTO 0)=FWORD ; P10B( 1 DOWNTO 0)=00 ; P10B( 9 DOWNTO 2)F10B,B=D10B, S=DIN10B ); u2 : REG10B PORT MAP( DOUT=D10B,DIN= DIN10B, LOAD=clk11 ); u3 : myrom1 PORT MAP( address=SIN10B, q=cc1, clock=clk11); u4 : ADDER10B PORT MAP( A=P1

21、0B,B=D10B,S=LIN10B ); u5 : REG10B PORT MAP( DOUT=SIN10B,DIN=LIN10B, LOAD=clk11 ); u6 : sanjiaobo PORT MAP( address=out11,q=cc2, clock=clk11 ); u7 : fangbo PORT MAP( address=out11,q=cc3, clock=clk11 ); u8 : juchibo PORT MAP( address=out11,q=cc4, clock=clk11 ); u9 : chiose PORT MAP( c1=cc1,c2=cc2,c3=c

22、c3,c4=cc4,cho=sel,q=FOUT); u10: fenpin PORT MAP(clk=CLK,clk1=clk11); u11: xuanpin PORT MAP(clk=CLK,clk1=clk12,f1=FWORD); u12: sudu PORT MAP(clk=clk12,out1=out11); END;*附1.LIBRARY IEEE; -10位加法器模块USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER10B IS PORT (A,B : IN STD_LOGIC_VE

23、CTOR(9 DOWNTO 0); S : OUT STD_LOGIC_VECTOR(9 DOWNTO 0) );END ADDER10B;ARCHITECTURE behav OF ADDER10B IS BEGIN S = A + B;END behav;*附2.LIBRARY IEEE; -10位寄存器模块USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG10B IS PORT ( Load : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(9 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(9 D

24、OWNTO 0) );END REG10B;ARCHITECTURE behav OF REG10B ISBEGIN PROCESS(Load, DIN) BEGIN IF LoadEVENT AND Load = 1 THEN DOUT = DIN; END IF; END PROCESS;END behav;*附3.LIBRARY IEEE; -32位加法器模块USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER32B IS PORT (A,B : IN STD_LOGIC_VECTOR(31 DO

25、WNTO 0); S : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END ADDER32B;ARCHITECTURE behav OF ADDER32B IS BEGIN S = A + B;END behav;*附4. LIBRARY IEEE; -32位寄存器模块USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS PORT ( Load : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO

26、 0) );END REG32B;ARCHITECTURE behav OF REG32B ISBEGIN PROCESS(Load, DIN) BEGIN IF LoadEVENT AND Load = 1 THEN DOUT = DIN; END IF; END PROCESS;END behav;*附5. LIBRARY IEEE; - -分频模块USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fenpin IS PORT(clk:IN std_logic;clk1:OUT std_logic);-输出

27、信号qEND fenpin;ARCHITECTURE b OF fenpin ISBEGINPROCESS(clk)VARIABLE tmp:std_logic_vector(8 DOWNTO 0);VARIABLE a:std_logic;BEGINif clkEVENT AND clk=1 THEN if tmp=500 then tmp:=000000000;a:=not a;else tmp:=tmp+1;end if;end if;clk1=a;END PROCESS;END b;*附6. LIBRARY IEEE; - -选频模块USE IEEE.STD_LOGIC_1164.AL

28、L;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY xuanpin IS PORT ( clk : IN STD_LOGIC; clk1: OUT STD_LOGIC; f1 : in STD_LOGIC_VECTOR(7 DOWNTO 0) ); END;ARCHITECTURE one OF xuanpin ISsignal tmp:std_logic_vector(7 DOWNTO 0);BEGINPROCESS(clk)VARIABLE clk11: std_logic;beginif clkevent and clk=1 thenif tmp=11111

29、111 then tmp=00000000;else tmp=tmp+1;if f1=00000001 then clk11:=tmp(0);elsif f1=00000010 then clk11:=tmp(1);elsif f1=00000100 then clk11:=tmp(2);elsif f1=00001000 then clk11:=tmp(3);elsif f1=00010000 then clk11:=tmp(4);elsif f1=00100000 then clk11:=tmp(5);elsif f1=01000000 then clk11:=tmp(6);elsif f1=10000000 then clk11:=tmp(7); end if; end if; end if;clk1=clk11;end process;end one;*附7. LIBRARY IEEE; - -选择模块USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY chiose IS PORT(c1,c2,c3,c4:IN std_logic_vector(9 DOWNTO 0);-复位信号reset, 时钟信号c

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1