eda实验数控分频器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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的配置下载操作。