欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    2010电子设计大赛.ppt

    • 资源ID:2137128       资源大小:810.01KB        全文页数:38页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2010电子设计大赛.ppt

    2010年北京市大学生电子设计竞赛试题,要求用指定的FPGA平台结合SOPC技术构造一个乒乓球游戏机。系统结构如果所示,FPGA通过两条I/O信号输出两组脉宽调制波,经过低通滤波器提取脉宽调制的均值电压,输入到双通道示波器中。示波器工作在X/Y模式。示波器屏幕上的光点代表乒乓球。 乒乓球X/Y电压的控制下在屏幕上移动。,基本要求: 1.构造两组无源低通滤波器,使得FPGA可以用脉宽调制方式控制球的位置(20分) 2.用给定的运放制作一放大器,使光点运动范围在示波器的X轴,Y轴方向上可调(10分) 3.乒乓球可按抛物线自动在屏幕上左右弹射,球的落点为屏幕两侧边的中间。(20分),扩展要求: 1.使用两个按钮分别作为左侧击球钮和右侧击球钮。当乒乓球靠近屏幕左边时按下左侧击球钮,可将球击回右侧。右侧击球钮亦然。(10分) 2.建立成败机制,即球抵达边沿而未按下击球钮,记为击球失败,用LED灯光表示。(10分) 3.建立记分机制,在七段数码管上显示双方得分(10分) 4.特殊功能,在不调整放大器的情况下,连按两下击球钮能击出高抛球,轨迹抛物线曲率变大(20分),竞赛板卡,扩展I/0,RS232,VGA接口,电源,开关,按钮,七段数码管,扩展I/0,LED,器材,示波器、稳压源、函数信号发生器、导线、电烙铁、个人PC机、RS232串口线、Hep EXCD竞赛开发板、竞赛对插通用电路板、万用表、镊子、面包板、松香等。,电子元件,0.1uF电容若干、220uF电容若干 、1K电阻若干、10K电阻若干、51K电阻若干、100K电阻若干、10K电位器若干、LM324运放一片等。,设计思路,FPGA,无源低通 滤波器,无源低通 滤波器,增益可调 放大器,增益可调 放大器,X,Y,双踪示波器,PWM1 (线性),PWM2 (非线性),击球按钮,七段数码 管显示计分,硬件部分 无源低通滤波器分析,硬件部分 无源低通滤波器分析,硬件部分 无源低通滤波器,FH=1/sqrt(2*pi*RC),硬件部分 增益可调放大器,UI=UO*R1/(RF+R1) UO=UI*(1+RF/R1) 6AV+oo,硬件电路总体设计,软件部分 大思路,count (VHDL),Compare (C语言),PWM,软件部分 大思路,PWM,count (VHDL),Compare (C语言),软件部分 大思路,PWM1:VHDL在底层实现一个双向计数器,和一个比较器;而比较匹配值则由C语言实时通过驱动程序更新,从而产生脉宽可调波;PWM2则类似;C语言通过数组保存小球运动的抛物线的轨迹;还有复杂的击球以及计分模块。,slv_reg0(32位),slv_reg0(0 to 15) (16位),slv_reg0(16 to 31) (16位),C语言,线性控制 比较匹配值,非线性控制 比较匹配值,PWM1,PWM2,VHDL语言,API接口( slv_reg0 寄存器),PWMj(32位),软件部分 VHDL 框图,双向 计数器,双向 计数器,Bus2IP_Clk,逻辑矢量 -无符号,逻辑矢量 -无符号,slv_reg0(32位),slv_reg0(0 to 15) (16位),slv_reg0(16 to 31) (16位),逻辑矢量 -无符号,逻辑矢量 -无符号,比较器,比较器,PWM1,PWM2,分频器,divclk,divclk,Count1,count2,count_value2,count_value1,compare1,compare2,compare_value1,compare_value2,软件部分 VHDL 端口及信号量,PWM1 : out std_logic; PWM2 : out std_logic; signal divclk : std_logic; -分频时钟 signal count1 : std_logic_vector(0 to 15):=X“0000“;-计数器1 signal count_value1: unsigned(0 to 15); -无符号计数值1 signal count2 : std_logic_vector(0 to 15):=X“0000“;-计数器2 signal count_value2 : unsigned(0 to 15); -无符号计数值2 signal compare1 : std_logic_vector(0 to 15); -比较匹配值1 signal compare_value1: unsigned(0 to 15); -无符号比较匹配值1 signal compare2 : std_logic_vector(0 to 15); -比较匹配值2 signal compare_value2 : unsigned(0 to 15); -无符号比较匹配值2 signal dir1 : std_logic:='1' -计数器1计数方向标志1为增计数,0为减计数 signal dir2 : std_logic:='1' -计数器2计数方向标志1为增计数,0为减计数 signal slv_reg0 : std_logic_vector(0 to C_SLV_DWIDTH-1);,软件部分 VHDL 时钟分频,PWM_CLK_DIV_PROC:process(Bus2IP_Clk) variable count1:integer:=0; begin if(rising_edge(Bus2IP_Clk) then if (count1=5) then count1:=0; divclk=not divclk; else count1:=count1+1; end if; end if; end process PWM_CLK_DIV_PROC;,软件部分 VHDL,-逻辑矢量转换为无符号数以便比较 count_value1=unsigned(count1); count_value2=unsigned(count2); compare_value1=unsigned(compare1); compare_value2=unsigned(compare2);,软件部分 VHDL PWM 核心部分,PWM_PROC:process(divclk) begin if(rising_edge(divclk) then if count1 = X“07FF“ then dir1='0' elsif count1 = X“0000“ then dir1='1' end if;-计数器1计数范围0到7FF if count2 = X“0FFF“ then dir2='0' elsif count2 = X“0000“ then dir2='1' end if;-计数器2计数范围0到FFF -计数 if dir1 = '1' then count1 = count1 + 1; elsif dir1 ='0' then count1 = count1 - 1; end if;,if dir2 = '1' then count2 = count2 + 1; elsif dir2 = '0' then count2 = count2 - 1; end if; -两路比较器 if count_value1=compare_value1 then PWM1='1' else PWM1='0' end if; if count_value2=compare_value2 then PWM2='1' else PWM2='0' end if; end if; end process PWM_PROC;,软件部分 VHDL PWM 与C语言接口,compare1=slv_reg0(16 to 31); -C语言传递32为无符号值的低16位作为比较器1的比较值 compare2=slv_reg0(0 to 15); -C语言传递32为无符号值的高16位作为比较器2的比较值,软件部分 C语言 框图,开始,设备初始化 变量定义 数据计算,小球落到 两侧?,失败计分清零 改变运动方向,小球运动 到下一 轨迹点,N,Y,是否 可以击球?,计分加一 改变运动方向,N,Y,成功击球?,读取击球 按钮信息,N,Y,软件部分 C语言,/延时程序 void delay() volatile int i; for (i = 0; i 20000; i+); ,软件部分 C语言,Void fail() XGpio_DiscreteWrite( ,软件部分 C语言,int main (void) Xuint32 Status; /读取GPIO初始化状态 XGpio Push_Bottons_4Bit; /定义GPIO按钮 XGpio Led_8Bit; /定义GPIO Xuint32 DataRead; /读取按钮数据 Xuint32 PWM256; /抽样256个点,保存在数组 Xuint32 count=0x0; /定义计分变量 int i,j=2,dir=1,inside_flag,hit_flag; /定义轨迹方向变量、击球标志、可击球标志,软件部分 C语言 计算抛物线轨迹,Status = XGpio_Initialize( /设置为输出,软件部分 C语言 计算抛物线轨迹,for(i=0;i256;i+) PWMi=(i*16)*65536+2039-(255-i)*i/8; /计算256个点的轨迹值,高16为是线性轨迹,低16位为抛物线轨迹,软件部分 C语言,while(1) if(j=0) /如果运动到第0个点、失败,计分清零、改变轨迹方向 dir=1; SEG_CTRL_IP_mWriteSlaveReg0(XPAR_SEG_CTRL_IP_0_BASEADDR,0,0x0); XGpio_DiscreteWrite( ,软件部分 C语言,if(j=255) /如果运动到第255个点、失败,计分清零、改变轨迹方向 dir=0; SEG_CTRL_IP_mWriteSlaveReg0(XPAR_SEG_CTRL_IP_0_BASEADDR,0,0x0); XGpio_DiscreteWrite(,软件部分 C语言 核心语句,PWM_IP_mWriteSlaveReg0(XPAR_PWM_IP_0_BASEADDR,0,PWMj); /在一个时刻的点的轨迹(比较匹配值)通过API函数接口传递给底层硬件 delay();/延时 if(j=0 /小球运动到第56和199个点时清除击球标志,软件部分 C语言,if(inside_flag=1) ,竞赛感想,一、锻炼了动手能力 二、收获了自信 三、磨练了自己的意志 四、深化了对理论知识的理解 五、学到了很多书本上没有的新知识,竞赛建议,一、复习好模电,打好基础 二、自学DSP、FPGA、单片机,注重理 解其本质,对其中的逻辑关系要弄熟。 三、学好计算机组成原理。 四、学习独立查询英文数据手册。 五、自己买通用电路板进行焊接,调试,锻炼实际动手能力。 六、小组之间一定要配合默契,不懂的问题可以讨论,但是尽量自己独立解决。,一些必须掌握的基础知识,一、A/D D/A 二、七段数码管 三、VGA 四、GPIO 五、LED灯 六、运放电路设计 七、三极管高频放大电路 八、功率放大器,九、频率计 十、C语言 十一、LCD液晶显示模块 十二、调制解调电路 十三、单片机、DSP 十四、传输协议、差错控制 十五、滤波器设计,FPGA 竞赛板卡 按钮(4 Bit),Xuint32 Status; /读取GPIO初始化状态 XGpio Push_Bottons_4Bit; /定义GPIO按钮 Xuint32 DataRead; /读取按钮数据 Status = XGpio_Initialize( /读取按键信息 DataRead = 0x7 按钮1 DataRead = 0xB 按钮2 DataRead = 0xD 按钮3 DataRead = 0xE 按钮4,FPGA 竞赛板卡 LED(8 Bit),Xuint32 Status; /读取GPIO初始化状态 XGpio Led_8Bit; /定义GPIO Xuint32 DataWrite; /读取按钮数据 Status = XGpio_Initialize( /输出数据,FPGA 竞赛板卡 Switch(8 Bit),Xuint32 Status; /读取GPIO初始化状态 XGpio Switches_8Bit; /定义GPIO Xuint32 DataRead; /读取按钮数据 Status = XGpio_Initialize( /读取数据,FPGA 竞赛板卡 IP核与C语言,PWM_IP_mWriteSlaveReg0(XPAR_PWM_IP_0_BASEADDR,0,PWMj); /C语言=VHDL 例子:PWM ip核 Data=ADC_CTRL_IP_mReadSlaveReg0(XPAR_ADC_CTRL_IP_0_BASEADDR, 0); /VHDL=C语言 例子:ADC ip核 基地址从Xparameters.h查询,谢谢!预祝各位参加2011年全国电子设计大赛的同学取得好成绩!,

    注意事项

    本文(2010电子设计大赛.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开