eda实验数控分频器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数控分频器

一实验目的:

学习数控分频器的设计,分析和测试方法。

二实验原理:

数控分频器的功能就是当在输入端给定不同输入数值时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数器溢出位与预置数加载输入信号相接即可。

三实验内容:

(1)打开quartus,在菜单中点击new,选择vhdl,在出现的窗口中输入vhdl代码并保存。其中代码如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY EX9 IS

PORT (

clk : IN STD_LOGIC; -- IO30(P125)

d : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO47..IO40 (P133, P132, P131, P130, P121, P120, P119, P118)

pfull: OUT STD_LOGIC; -- IO01(P38)

fout : OUT STD_LOGIC -- IO00(P37)

);

END EX9;

ARCHITECTURE behv OF EX9 IS

SIGNAL full: STD_LOGIC;

BEGIN

p_reg:

PROCESS(clk)

V ARIABLE cnt8: STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

IF clk'EVENT AND clk = '1' THEN

IF cnt8 = "11111111" THEN

cnt8 := D; -- 计数满后置入初值重新计数

full <= '1'; -- 置计数满信号

ELSE

cnt8 := cnt8 + 1;

full <= '0';

END IF;

END IF;

pfull <= full; -- 输出full用于观察

END PROCESS p_reg;

p_div: -- 将full信号除2,生成方波信号

PROCESS(full)

V ARIABLE cnt: STD_LOGIC;

BEGIN

IF full'EVENT AND full = '1' THEN

cnt := NOT cnt;

END IF;

fout <= cnt;

END PROCESS p_div;

END behv;

(2)创建工程之后对编译之前的参数进行设置,启动start compilation项,其编译结果如下:

(3)时序仿真:

对仿真前参数设置后启动start simulation,直到出现simulation was successful,仿真结束。

(4)查看电路图:

在tools菜单中选择netlist viewers项,在出现的下拉菜单中选中RTL viewers,电路图如下:

(5)引脚设置和下载:

在Assignment Edit编辑窗口中选择Gategory中的pin,在出现的窗口中根据vhdl 代码中的引脚进行设置,设置后的引脚如下

(6)然后将编译产生的SOF格式配置文件配置进FPGA中,设置完成后单击下载标符Start按钮,即进入对目标器件FPGA的配置下载操作。

相关文档
最新文档