版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.FPGA硬件系统设计1.1 功能要求利用所给器件:一个8位拨码开关(见图1-1),排针40×1,芯片DAC0832×1, 芯片LM358×1,一个电位器构成硬件电路,实现与FPGA相连,输出正弦波,三角波,锯齿波,方波。(图1-1)1.2 FPGA硬件系统组成(见图1-2)(图1-2)FPGA框架结构由三部分组成:可编程输入/输出模块I/OB (I/O Block) I/OB:位于芯片内部四周,主要由逻辑门、触发器和控制单元组成。在内部逻辑阵列与外部芯片封装引脚之间提供一个可编程接口。可配置逻辑模块CLB (Configurable Logic Block)C
2、LB:是FPGA的核心阵列,用于构造用户指定的逻辑功能,不同生产厂商的FPGA器件其不同之处主要在核心阵列。每个CLB主要由查找表LUT(Look Up Table)、触发器、数据选择器和控制单元组成。可编程内部连线PI (Programmable Interconnect) PI:位于CLB之间,用于传递信息。编程后形成连线网络,提供CLB之间、CLB与I/OB之间的连线。1.3 FPGA最小系统简介(见图1-3)(图1-3)1.3.1 FPGA最小系统板(见图1-4) (图1-4)1.3.2 下载接口Alter提供常用的编程连接电缆有4种:(1)Byte Blaster配置电缆(2)Byt
3、e Blaster MV配置电缆(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
4、方式用于Cyclone、APEX、APEX20K、APE X l K、Mercury、Excalibur、FLEXl0K、FLEX8000和FLEX6000等器件的配置;JTAG方式用于编程或配置含有JTAG接口的芯片。本次实验验选择APS口(如图1-5)(图1-5)1.4 FPGA外围电路设计1.4.1 拨码开关电路设计(如图1-6)(图1-6)共有8个开关,K1,K2控制波形(正弦波,三角波,锯齿波,方波),K3K8控制频率变换。本实验中开关一端与FPGA相连,另一端与电源相连,但是这样做不安全,会影响FPGA,因而在开关与电源之间接一个电阻,实验中用了一个330*8的排阻,电源脚(1)接
5、+3.3V。每个开关流过电流为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、#:数据传送信号6.WR2#:DAC寄存器写信号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
7、、ILE接+5V;IOUT1,IOUT2分别接运放负端,正端;Rfb加一电位器与运放输出相连,作为输出。DAC0832是电流型输出器件,因此需要加一个运放,实验中用到LM358。1.4.3 LM358电路介绍1.4.3.1 LM358芯片简介LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。1.4.3.2 LM358芯片引脚图(如图1-10)(图1-10)1.4.3.3 LM358的工
8、作方式 LM358内部有2个运算放大器,因此可以使用单运放,也可以使用双运放,本实验中采用单运放。1.5 硬件电路调试及结果分析结果如图(1-11)(图1-11)分析:设计了一个正弦波,但是调试后发现有非常大的毛刺,之后检查发现时由于相位控制字未锁定造成,后已解决。2.基于DDS技术的信号发生器设计2.1 功能要求利用频率合成技术,使某一(或多个)基准频率,通过一定的变换与处理后,形成一系列等间隔的离散频谱;根据特定公式取点,在Quartus软件进行仿真,经过USB Blaster在APS口下载到FPGA板上,再与硬件连接,在示波器观察波形及其参数的过程。2.2 整体设计如图(2-1)(图2-
9、1)2.3 DDS技术的基本原理频率合成技术频率合成技术:利用频率合成的方法,使某一(或多个)基准频率,通过一定的变换与处理后,形成一系列等间隔的离散频谱。2.3.2 DDS技术简介直接数字频率合成器(DDS)是一种基于全数字技术,从相位概念出发直接合成所需波形的一种频率合成技术,它是目前最为典型、应用最广泛的一种频率合成技术。它工作频率范围很宽;极短的频率转换时间;极高的频率分辨力;有任意波形输出能力;数字调制性能好等优点。2.3.3 DDS基本结构如图(2-2)(图2-2)2.4 程序设计2.4.1 正弦波产生程序设计及仿真(1) 程序的功能:实现正弦波输出(2) 编程方式用c语言编程,导
10、出1024 个点,形成.mif文件,正弦波的公式为 ,其中 C程序为:#include<stdio.h>#include<math.h>main( ) int i;float s;for(i=0;i<1024;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) 程序的
11、功能:实现三角波输出(2) 结构图或实体图如图(2-6)(图2-6)(3) 仿真波形及分析如图(2-7)此图为每个点的数据(图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
12、)此图为每个点的数据(图2-13)具体波形图如图(2-14)(图2-14)2.4.5 顶层程序设计及仿真(1) 程序的功能拨动开关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_UN
13、SIGNED.ALL;ENTITY DDS_VHDL IS PORT ( CLK : IN STD_LOGIC; sel : 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 :
14、 IN STD_LOGIC; clk1 : OUT STD_LOGIC ); END COMPONENT; COMPONENT 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 :
15、OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); END COMPONENT; COMPONENT myrom1 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, 时钟信号clkaddress:in std_logic_vector(9 DOWNTO 0);q:OUT std_
16、logic_vector(9 DOWNTO 0) ); END COMPONENT;COMPONENT juchibo PORT( clock:IN std_logic;-复位信号reset, 时钟信号clkaddress: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, 时钟信号clkaddress:in std_logic_vector(9 DOWNTO 0);
17、q:OUT std_logic_vector(9 DOWNTO 0) ; END COMPONENT; 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 S
18、TD_LOGIC_VECTOR(7 DOWNTO 0); END COMPONENT; 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
19、( 9 DOWNTO 0);SIGNAL LIN10B : STD_LOGIC_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_LOG
20、IC;SIGNAL clk12 : STD_LOGIC;SIGNAL out11: 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)<=PWORD ; u1 : ADDER10B PORT MAP( A=>F10B,B=>D10B, S=>DIN10B ); u2 : REG10B PORT MAP(
21、 DOUT=>D10B,DIN=> DIN10B, LOAD=>clk11 ); u3 : myrom1 PORT MAP( address=>SIN10B, q=>cc1, clock=>clk11); u4 : ADDER10B PORT MAP( A=>P10B,B=>D10B,S=>LIN10B ); u5 : REG10B PORT MAP( DOUT=>SIN10B,DIN=>LIN10B, LOAD=>clk11 ); u6 : sanjiaobo PORT MAP( address=>out11,q=
22、>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=>cc3,c4=>cc4,cho=>sel,q=>FOUT); u10: fenpin PORT MAP(clk=>CLK,clk1=&g
23、t;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_VECTOR(9 DOWNTO 0); S : OUT STD_LOGIC_VEC
24、TOR(9 DOWNTO 0) );END ADDER10B;ARCHITECTURE behav OF ADDER10B IS BEGINS <= 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 DOWNTO 0) );END REG10B;ARCHITECTURE b
25、ehav OF REG10B ISBEGIN PROCESS(Load, DIN) BEGIN IF Load'EVENT 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 DOWNTO 0); S : OUT
26、STD_LOGIC_VECTOR(31 DOWNTO 0) );END ADDER32B;ARCHITECTURE behav OF ADDER32B IS BEGINS <= 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 0) );END REG3
27、2B;ARCHITECTURE behav OF REG32B ISBEGIN PROCESS(Load, DIN) BEGIN IF Load'EVENT 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
28、);-输出信号qEND fenpin;ARCHITECTURE b OF fenpin ISBEGINPROCESS(clk)VARIABLE tmp:std_logic_vector(8 DOWNTO 0);VARIABLE a:std_logic;BEGINif clk'EVENT 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
29、; - -选频模块USE IEEE.STD_LOGIC_1164.ALL;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
30、clk'event and clk='1' thenif tmp="11111111" 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; - -
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人教版八年级数学寒假预习 第06讲 勾股定理的逆定理(1个知识点+4大考点举一反三+过关测试)
- 【红对勾】2020-2021学年人教版高中物理选修3-1作业:3-6-带电粒子在匀强磁场中的运动
- 浙江省丽水莲都区2023-2024学年第二学期期末检测卷 六年级下册科学
- 【名师一号】2020-2021学年高中英语选修六-双基限时练13
- 【名师一号】2020-2021学年高中英语(外研版)必修二-双基限时练14
- 2021高考英语一轮课下限时训练及答案(人教新课标必修2Unit-2)
- 《产碱杆菌肺炎》课件
- 一年级数学(上)计算题专项练习集锦
- 四年级数学(四则混合运算带括号)计算题专项练习与答案汇编
- 中国传统服饰文化
- 回收二手机免责协议书模板
- 20以内的加法口算练习题4000题 210
- 苏轼向南(2023年四川广元中考语文试卷散文阅读题及答案)
- 2024-2030年中国大棚果蔬种植产业经营管理策略与投资前景展望报告
- 2025年日历A4纸打印
- 储能投资方案计划书
- 麦克纳姆轮的设计
- HG∕T 4286-2017 搪玻璃换热管
- 2025中考英语备考专题10 阅读理解之说明文(北京中考真题+名校模拟)
- 二年级上册100道口算题大全(全册完整版18份每份100道)
- 电力外线施工方案
评论
0/150
提交评论