下载可编辑
图8 选择结
点
单击OK,完成引脚输入,加上输入信号后波形文件存盘。
2.运行仿真器。在Processing菜单下选择StartSimulation项,直到Simulator was successful出现,仿真结束。完成波形如图9所示。
.专业.整理.
下载可编辑
图9 仿真波形图 步骤4:引脚锁定
选择Assignments?Assignments Editor,锁定引脚,输入以后如下图,设定完成以后再运行一次程序。
图10 引脚锁定
步骤5:编程下载:
1)首先将下载线把计算机的打印机口与目标板(如开发板或实验板)连接好,打开电源
2)下载方式设定。选择Tools?Programmer选项,跳出下图左侧所示的编程器窗口,然后选择Hardware Setup硬件设置选项,其窗口图中左侧所示。在其下拉菜单中选ByteBlaster(MV)编程方式,在Model栏选定JTAG模式。然后点击start按钮下载,进入下载模式,等待下载完成以后在试验箱上进行调试检测是否正确。
.专业.整理.
下载可编辑
五、心得体会
经过两周EDA课程设计,使我受益匪浅。这不仅增强了我对EDA设计的兴趣,更巩固了基本的电路设计流程、方法以及技巧。具备了这些基本知识,为今后的自主学习奠定了良好的基础。在编写时可以相互借鉴,这样可以节省一定的时间,但在一个问题上纠结了很久,现还未明白,为什么一个变量在进程中只能被一个边沿信号触发进行修改,无奈之下选择了另一种方法,通过一个控制端来进行选频,以实现快速调时,在闹钟的处理上使用了数据选择,设置闹铃时数码管显示闹钟时间。
在设计中还是需要注意一些常见的问题,比如实体名、项目名等,还有在编写VHDL文件时,一些文件名也是需要注意的;在编写程序的过程中,信号与变量的使用是一个特需要注意的,进程中一个信号不应有多个复制源,信号的复值是在进程结束之时,而变量的复值是立即的,在书写时容易出错的地方是,信号的赋值与变量的赋值符号,信号作为全局的联络线,信号往往不允许在多个进程中被赋值,因为进程之间是并行的;整个系统是由多个底层元件组成,底层元件之间的相互连接是通过信号实现。
由于时间比较紧,在准备智能车比赛,就没有挑战难度高点的题了,但本人对FPGA是挺感兴趣的,在今后的学习中我会把握时间好好学学。
最后感谢姚老师对我们的指导,使得实验能够顺利完成!
六、程序代码:
1分频:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity PrescalClk is
port(clkin : in std_logic;
clkout_1Hz : out std_logic; clkout_4Hz : out std_logic); end ;
Architecture bhv of PrescalClk is begin
process(clkin)
variable count1 : integer range 0 to 32768; variable count2 : integer range 0 to 8192; begin if clkin 'event and clkin='1' then count1+1;count2:=count2+1;
if(count1=32768) then clkout_1Hz<='1' ; else clkout_1Hz<='0'; end if;
if(count2=8192) then clkout_4Hz<='1'; else clkout_4Hz<='0'; end if;
.专业.整理.
count1 :=
下载可编辑
end if;
end process; end;
2时计数模块 library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity hour is
port(rst,carry,en : in std_logic; ADJclk,ADJEN : in std_logic;
ADJ : in std_logic_vector(3 downto 0); decade,unit : out std_logic_vector(3 downto 0)); end ;
architecture bhv of hour is signal clk : std_logic; begin
process(carry,ADJ,ADJEN,ADJclk) begin
if (ADJEN='1' and ADJ=\ else clk<=carry; end if;
end process;
process(rst,en,clk)
variable unitcount : std_logic_vector(3 downto 0); variable decadecount : std_logic_vector(3 downto 0); begin
if (rst='1') then unitcount:=\ elsif(en='1') then
if clk 'event and clk='1' then
if(unitcount<10) then unitcount:=unitcount+1; else unitcount:=\ end if;
if(unitcount=10) decadecount:=decadecount+1;unitcount:=\ end if;
if(decadecount=2 and unitcount=4) unitcount:=\ end if; end if; end if;
decade<=decadecount;
.专业.整理.
then then