欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    FPGA数字跑表程序设计与防仿真.docx

    • 资源ID:10706108       资源大小:133.80KB        全文页数:16页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    FPGA数字跑表程序设计与防仿真.docx

    1、FPGA数字跑表程序设计与防仿真一、 设计名称:基于FPGA的数字系统设计(数字跑表)二、 设计指标:1、跑表精度为0.01秒2、跑表计时范围为:1小时3、设置开始计时/停止计时、复位两个按钮4、显示工作方式:用六位BCD七段数码管显示读数。显示格式为xx分xx秒xx0.01秒三、 设计要求:1、设计出符合设计要求的解决方案2、设计出单元电路3、利用EDA软件对各单元电路及整体电路进行仿真4、利用EDA软件在实验板上实现设计四、 方案设计:1、由石英振荡器产生正弦信号,然后通过分频器分频产生需要的分频信号2、由开关通过使能控制对计数器的工作状态进行控制3、分频信号控制计数器计数4、将计数器结果

    2、输入显示模块,完成在七段数码管上的显示五、 系统设计框图:六、 单元电路划分1 分频器 (1)设计思路:由于显示最末位为0.01秒故需给计数器提供100Hz的时钟信号;显示部分由于一次只能显示单只数码管,为满足设计要求一次显示六位则需提高显示模块时钟信号频率,利用视觉效应使人一次看到六位显示,故分频器需要提供100Hz和1KHz两个输出信号。分频器通过计数的方法实现分频功能。 (2)元件符号: (3)源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIG

    3、NED.ALL;entity clock is Port ( clk : in STD_LOGIC; clk1 : out STD_LOGIC; clk2 : out STD_LOGIC);end clock;architecture Behavioral of clock issignal fcount1:integer range 1 to 24000:=1;signal fcount2:integer range 1 to 5:=1;signal clk1_tmp:STD_LOGIC:=0;signal clk2_tmp:STD_LOGIC:=0;begin process (clk,f

    4、count1,clk1_tmp) begin if clkevent and clk = 1 then if fcount1= 24000 then fcount1 = 1; clk1_tmp= not clk1_tmp; else fcount1 = fcount1 + 1; end if; end if;end process;clk1= clk1_tmp;process (clk1_tmp,clk1_tmp,fcount2,clk2_tmp) begin if clk1_tmpevent and clk1_tmp = 1 then if fcount2= 5 then fcount2 =

    5、 1; clk2_tmp= not clk2_tmp; else fcount2 = fcount2 + 1; end if; end if;end process;clk2=clk2_tmp;end Behavioral;(4)仿真结果: (5)结果分析:仿真结果显示分频程序正确的产出了实验所需频率信号.2 十进制计数器 (1)源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity counter10 is Port ( r

    6、st : in STD_LOGIC; clk : in STD_LOGIC; carry_in : in STD_LOGIC; carry_out : out STD_LOGIC; count_out : out STD_LOGIC_VECTOR (3 downto 0);end counter10;architecture Behavioral of counter10 issignal count_tmp:STD_LOGIC_VECTOR (3 downto 0):=0000;signal pause : STD_LOGIC:=1;beginprocess(clk,rst,carry_in

    7、,count_tmp)beginif rising_edge(carry_in) thenpause = not pause;end if;if rst=0 then count_tmp=0000; carry_out=0; elsif clkevent and clk=1 then if pause=1 then if count_tmp=1001 then count_tmp=0000; carry_out=1; ELSE count_tmp=count_tmp+1; carry_out=0; end if; end if;end if;count_out=count_tmp;end pr

    8、ocess; end Behavioral;(2)仿真结果: (3)结果分析: 仿真结果显示当无reset信号输入时计数器正常计数并在记满时自动清零并产生进位信号,当有reset输入时会清零,程序符合设计要求.3 六进制计数器 (1)源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity counter6 is Port ( rst : in STD_LOGIC; clk : in STD_LOGIC; carry_in :

    9、in STD_LOGIC; carry_out : out STD_LOGIC; count_out : out STD_LOGIC_VECTOR (3 downto 0);end counter6;architecture Behavioral of counter6 issignal count_tmp:STD_LOGIC_VECTOR (3 downto 0):=0000;beginprocess(clk,rst,carry_in,count_tmp)beginif rst=0 then count_tmp=0000; carry_out=0; elsif clkevent and cl

    10、k=1 then if carry_in=1 then if count_tmp=0101 then count_tmp=0000; carry_out=1; ELSE count_tmp=count_tmp+1; carry_out=0; end if; end if;end if;count_out=count_tmp;end process;end Behavioral;(2)仿真结果:4 显示模块(1)设计思路:数码管显示需要对应位置显示对应位数的时间,故需要一个信号同时选择六个地址输入的一个和其所对应的数码管,因此需要一个六位计数器产生这个选择信号。前级计数器的地址输入为4位地址输入

    11、而数码管段选信号为7位信号,因而需要对输入的地址信号进行七段译码。由于硬件要求还需输出一低电平信号使数码管能正常工作。 (2)元件符号:(3)源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNI

    12、SIM.VComponents.all;entity xiansi is PORT(count_out1 : in STD_LOGIC_VECTOR (3 downto 0); count_out2 : in STD_LOGIC_VECTOR (3 downto 0); count_out3 : in STD_LOGIC_VECTOR (3 downto 0); count_out4 : in STD_LOGIC_VECTOR (3 downto 0); count_out5 : in STD_LOGIC_VECTOR (3 downto 0); count_out6 : in STD_LOG

    13、IC_VECTOR (3 downto 0); clk : in STD_LOGIC; led : out STD_LOGIC_VECTOR (6 downto 0); sel:out STD_LOGIC_VECTOR (2 downto 0 ); led_en: out STD_LOGIC);end xiansi ;architecture Behavioral of xiansi issignal sel_tmp: STD_LOGIC_VECTOR (2 downto 0);signal y_tmp : STD_LOGIC_VECTOR (3 downto 0);beginprocess(

    14、clk)beginif clkevent and clk = 1 then if sel_tmp=101 then sel_tmp=000; else sel_tmpy_tmpy_tmpy_tmpy_tmpy_tmpy_tmpy_tmpledledledledledledledledledledled=0000000;end case;end process;led_en=0;selT8;reset=E4;ssignal=G6; G=D7; sel0=F8; sel1=D8; sel2=E7;led0=A11; led1=B12; led2=A12; led3=C12; led4=C13; l

    15、ed5=A13; led6=B14(3) 下载过程:双击【 Generate Programing File】关闭弹出的窗口双击【 Generate Prom, ACE,or JTAG File】双击【 Finish】,选择后缀为bit的文件,单击【 Open】,最后单击【 Bypass 】光标移至该图标,单击右键,然后单击【Program】,点击【OK】,下载成功八、测试结果 七段数码管可以正确显示时间,从00:00:00到了59:59:99(59分59秒99*0.01s)再自动转到00:00:00,按下开始、暂停键计时暂停、开始,按下清零后计时从00:00:00重新开始。九、心得体会 通过本次试验课程,使我对FPGA开发板有了一定的了解,对使用VHDL语言设计简单数字系统的大致步骤也有了一定的认识,对编写程序中时一些基本结构和细节有了一定的掌握。加深了我对使用软件让硬件电路实现某些功能的认识与联系。


    注意事项

    本文(FPGA数字跑表程序设计与防仿真.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开