EDA技术与VHDL语言课程大作业设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA技术与VHDL语言课程大作业
设计题目:电子分频器
姓名:李露
班级:自动化10(2)
学号: 208
目录
1. 设计背景
2. 设计方案
计数器模块
任意偶数分频模块
任意奇数分频模块
设计思路
3. 数字分频器模块的VHDL源程序
任意偶数分频的VHDL源程序()
任意奇数分频的VHDL源程序()
4. 源程序总体描述
5. 波形仿真图
6. 总结
7. 参考文献
1.设计背景
EDA技术作为计算机硬件设计中的关键设计技术之一,是每一位将来希望从事涉及电子系统与集成电路设计研究领域工作的人所必须掌
握的一门技术。时序逻辑电路作为其主要设计与研究的电路类型之一,在EDA中占据着重要的位置,而时钟信号在时序逻辑电路有占据着重要的位置,它决定了时序逻辑单元中的状态何时更新。时钟信号作为一种有固定周期并与运行状态无关的信号量,在边沿触发机制中,只有上升沿或下降沿才是有效信号,才能控制逻辑单元状态量的改变。为满足不同的时序电路要求,对时钟信号进行分频也显得格外重要
基于EDA技术的数控分频器设计,采用的是用软件的方法设计硬件的EDA (电子设计自动化)技术。作为EDA技术重要组成部分的VHDL硬件描述语言是一种符合IEEE工业标准的建模语言。用它设计的数控分频器可作为一个模块,移植到很多数字电路系统中,且极易修改,只要修改程序中的某几条语句,就可使最大分频系数得到改变。整个设计过程简单、快捷。可从根本上减少硬件调试的时间,为总体设计完成争取宝贵的时间。
2. 设计方案
计数器模块
通过计数器来记录clk的信号个数,分别有以上升沿计数和以下降沿计数。偶数计数器可采用以上升沿计数,即每当clk从0变为1时记一个数,下降沿计数是当clk从1变为0时记一个数
任意偶数分频模块
定义一个计数器对输入时钟进行计数,在计数的前一半时间里,输出高电平,在计数的后一半时间里,输出低电平,这样输出的信号就是占空比为50%的偶数分频信号。例如,6分频,计数值为0~2输出高电平,计数值为3~5输出低电平。
任意奇数分频模块
定义两个计数器,分别对输入时钟的上升沿和下降沿进行计数,然后把这两个计数值输入一个组合逻辑,用其控制输出时钟的电平。
这是因为计数值为奇数,占空比为50%,前半个和后半个周期所包含的不是整数个clk的周期。例如,5分频,前半个周期包含个clk 周期,后半个周期包含个clk周期。
设计思路
原理图
不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有计时器溢出位与预置数加载输入信号相接即可。
3. 数字秒表计时模块的VHDL源程序
任意偶数分频的VHDL源程序()
library ieee;
use dvf is
port(clk_in:in std_logic;
fout:out std_logic);
end;
architecture one of dvf is
signal cnt: integer range 0 to 2000;
signal clk_out:std_logic;
begin
process(clk_in)
begin
if clk_in'event and clk_in = '1' then if cnt=2000 then
cnt <=0;
clk_out <=not clk_out;
else
cnt<=cnt+1;
end if;
end if;
end process;
fout<=clk_out;
end one;
任意奇数分频的VHDL源程序()
library IEEE;
use
use use
entity division5 is
port (clk : in std_logic;
out1: out std_logic);
end division5;
architecture Behavioral of division5 is signal out2, out3 : std_logic := '0';
signal temp1,temp2 : integer range 0 to 10; begin
process(clk) --输出占空比为50%的奇数5分频时钟 begin
if clk'event and clk = '1' then
temp1<=temp1+1;
if temp1=2 then
out2<='1';
elsif temp1=4 then
out2<='0';
temp1<=0;
end if;
end if;
end process;
process(clk) --同样输出占空比为50%的奇5分频时钟
begin
if clk'event and clk = '0' then
temp2<=temp2+1;
if temp2=2 then
out3<='1';
elsif temp2=4 then
out3<='0';
temp2<=0;
end if;
end if;
end process;
p3:process(out2,out3)
begin
out1<=out2 or out3;
end process p3;
--或运算,得到占空比为50%的奇数5分频时钟 end process;
end Behavioral;
4. 源程序总体描述