导航:首页 > 编程语言 > EDA程序设计一个30分频器

EDA程序设计一个30分频器

发布时间:2025-05-27 11:12:00

⑴ 一个按键怎么控制数码管显示不同的字符

这个要加程序的,按一下按键,程序中变量自加1,然后根据程序变量的值,显示相应的字符。例如:1 MP3 2 CD 3 DVD,如果当前变量值为3,下一次按键有效时,应直接赋值为1,这样就形成了循环

⑵ EDA课程设计:彩灯控制器

以前做的设计,粘贴时图形没出来,参考一下,记得给分啊

一.设计目的
1、学习EDA开发软件和MAX+plus Ⅱ的使用方法,熟悉可编程逻辑器件的使用,通过制作来了解彩灯控制系统
2、进一步掌握数字电路课程所学的知识。
3、了解数字电路设计的一般思路,进一步解决和分析问题。
4、培养自己的编程和谨慎的学习态度
二、.设计题目内容和要求
(1)课题内容:
用EDA技术设计一个彩灯控制器,使彩灯(LED管)能连续发出三种以上不同的花型(自拟);
随着彩灯显示图案的变化,发出不同的音响声。
要求使用7段数码管显示当前显示的花型,如第一种花型显示A1,第二种花型显示b2,第三种花型显示C3
(2)主要任务:完成该系统的硬件和软件的设计,并利用实验箱制作出实物演示,调试好后并能实际运用(指导教师提供制作所需的器件),最后就课程设计本身提交一篇课程设计报告。
三、总体方案设计与选择
1 总体方案的设计
方案一:电路分为三个部分:彩灯花型模块、声音模块,时钟模块。用时钟控制声音和花型,整体使用相同的变量与信号,主体框图如下;

图三—1-1方案一的的流程图
方案二:电路分为五个模块:分频器模块、16进制计数器、4进制计数器,4选1选择器、彩灯控制器。其中彩灯控制器是用来输出不同的花样,彩灯控制器的输出则是用一个16进制的计数器来控制,扬声器的输出时用不同的频率来控制,所以用了一个集成分频器来使输入的频率被分为几种不同的频率,不同频率的选择性的输出则是用一个4选一的选择器来控制。整体框图如下:

图三—1-2方案二的流程图
2、方案的选择
方案一是将融合在一起,原理思路简单,元件种类使用少,但是在编程时要使用同一变量和信号,这样就会给编程带来很大的困难,另外中间单元连线较多,不容易检查,门电路使用较多,电路的抗干扰能力会下降。
方案二将彩灯花型控制与声音控制分开,各单元电路只实现一种功能,电路设计模块化,且编程时将工作量分开,出现错误时较容易检查,连线较少且容易组装和调试。
结合两个方案的优缺点,我选择容易编程、组装和调试的方案二。

四、模块电路的设计
1、分频器模块
设计要求显示不同的彩灯的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。
模块说明:
Rst:输入信号 复位信号 用来复位分频器的输出使输出为“0”,及没有音乐输出。
Clk:输入信号 模块的功能即为分频输入的频率信号。
Clk_4、clk8、clk_12、clk_16:输出信号 即为分频模块对输入信号clk的分频,分别为1/4分频输出、1/8分频输出、1/12分频输出、1/16分频输出。不同的频率会发出不同的声音。如图

图四-1分频器电路图
2、16进制计数器
16进制模块用来控制彩灯输出模块,即确定彩灯控制器的不同的输出。
Rst:输入信号 复位信号 用来复位16进制使其输出为“00000”,即彩灯不亮。
Clk1:输入信号 用来给模块提供工作频率。
Count_out[3..0]:输出信号 即为16进制计数器的输出,此输出信号作为彩灯的输入信号。
如图四-2
图四-2 16进制计数器电路图
3、4进制计数器模块
4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控制扬声器工作。
Clk2:输入信号 来为计数器提供工作频率。
Rst:输入信号 复位信号 使计数器的输出为“00”。
如图四-3
图四-3 4进制计数器电路图
4、4选1选择器模块
Rst:输入信号复位信号使选择器的输出为“0”。
In1、in2、in3、in4:输入信号接分频器的输出。
Inp[1..0]:输入信号接4进制计数器的输出用来控制选择器的选择不同的输入选择不同的输出。
Output2:输出信号直接接扬声器即输出的是不同的频率来控制扬声器播放声音
如图四—4
图四—4 4选1选择器电路图
5、彩灯控制模块
彩灯控制采用的模式6来进行显示。
图四—5—1模式6结构图
彩灯控制模块用来直接控制彩灯的输出,使彩灯表现出不同的花样。
Rst:输入信号 使彩灯控制模块的输出为“00000000”,即让彩灯无输出。
Input[4..0]:输入信号 不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。
Output3[7..0]:输出信号 直接与数码管相连来控制数码管。
如图四—5—2
图四-5-2 彩灯控制电路图
五、EDA设计与仿真
1、源程序:
----------------------------------------------分频器模块-----------------------------------------

LIBRARYieee;
USEieee.std_logic_1164.all;

ENTITYfenpinqi IS

PORT
(
clk2,rst :IN std_logic;
clk_12,clk_4,clk_16,clk_8 : OUT std_logic
);

ENDfenpinqi;

ARCHITECTUREcd OF fenpinqi IS
begin
p1:process(clk2,rst)
variable a:integer range 0 to 20;

begin
if rst='1' then
clk_4<='0'; ----- 复位信号控制部分
else
if clk2'event and clk2='1'then
if a>=3 then
a:=0;
clk_4<='1';
else
a:=a+1;
clk_4<='0';
end if;
end if;
end if;
endprocess p1;

p2:process(clk2,rst)
variable b:integer range 0 to 20;

begin
if rst='1' then
clk_16<='0'; ----- 复位信号控制部分
else
if clk2'event and clk2='1'then
if b>=15 then
b:=0;
clk_16<='1';
else
b:=b+1;
clk_16<='0';
end if;
end if;
end if;
endprocess p2;

p3:process(clk2,rst)
variable c:integer range 0 to 20;

begin
if rst='1' then
clk_8<='0'; ----- 复位信号控制部分
else
if clk2'event and clk2='1'then
if c>=7 then
c:=0;
clk_8<='1';
else
c:=c+1;
clk_8<='0';
end if;
end if;
end if;
endprocess p3;

p4:process(clk2,rst)
variable d:integer range 0 to 40;

begin
if rst='1' then
clk_12<='0'; ----- 复位信号控制部分
else
if clk2'event and clk2='1'then
if d>=11 then
d:=0;
clk_12<='1';
else
d:=d+1;
clk_12<='0';
end if;
end if;
end if;
endprocess p4;
endcd;

----------------------------------------------4选1选择器---------------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;

ENTITYxzq4_1 IS

PORT
(
rst:in std_logic;
inp:in integer range 0 to 3;
in1,in2,in3,in4 : In std_logic;

output2 :OUT std_logic
);

ENDxzq4_1;

ARCHITECTUREa OF xzq4_1 IS

BEGIN

PROCESS (rst,inp)
BEGIN
if(rst='1') then output2<='0';

else
case inp is
when 0=>output2<=in1;
when 1=>output2<=in2;
when 2=>output2<=in3;
when 3=>output2<=in4;
when others=>null;
end case;
end if;
END PROCESS;
ENDa;

-------------------------------------------彩灯控制模块----------------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;

ENTITYcaideng IS

PORT
(
input :
IN INTEGER RANGE
0 TO 15;
rst:in std_logic;
output3 :OUT std_logic_vector(7 downto 0);
sm :out std_logic_vector(6 downto 0)
);

ENDcaideng;

ARCHITECTUREa OF caideng IS

BEGIN

PROCESS (input)
BEGIN
if rst='1' thenoutput3<="00000000";sm<="0000000";
else
case input is
when 0=>output3<="00111000";sm<="0000110";
when1=>output3<="00001111";sm<="0000110";
when2=>output3<="00111110";sm<="0000110";
when3=>output3<="01111111";sm<="0000110";

when4=>output3<="01011011";sm<="1011011";
when5=>output3<="01110110";sm<="1011011";
when6=>output3<="00001111";sm<="1011011";
when7=>output3<="01111111";sm<="1011011";

when8=>output3<="01101101";sm<="1001111";
when9=>output3<="00000111";sm<="1001111";
when10=>output3<="01110111";sm<="1001111";
when11=>output3<="01111011";sm<="1001111";

when12=>output3<="00111000";sm<="1100110";
when13=>output3<="00111111";sm<="1100110";
when14=>output3<="00111110";sm<="1100110";
when 15=>output3<="01111001";sm<="1100110";
when others=>null;

end case;
end if;
end process;
end a;

--------------------------------------------16进制计数器模块-----------------------------------

LIBRARYieee;
USEieee.std_logic_1164.all;

ENTITYcounter_16 IS

PORT
(
clk,rst :IN std_logic;
count_out :
OUT INTEGER RANGE
0 TO 15);

ENDcounter_16;

ARCHITECTUREa OF counter_16 IS
BEGIN

PROCESS (rst,clk)
variable temp:integer range 0 to 16;
BEGIN

IF rst='1' THEN
temp:=0;

ELSIF (clk'event and clk='1') THEN

temp:=temp+1;
if(temp=15) then
temp:=0;
end if;
END IF;
count_out<=temp;
END PROCESS;
ENDa;

-------------------------------4进制计数器模块----------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;

ENTITYcounter_4 IS

PORT
(
clk,rst :IN std_logic;
count_out :OUT integer range 0 to 3 );

ENDcounter_4;

ARCHITECTUREa OF counter_4 IS
BEGIN

PROCESS (rst,clk)
variable temp:integer range 0 to 16;
BEGIN

IF rst='1' THEN
temp:=0;
ELSIF (clk'event and clk='1') THEN

temp:=temp+1;
if(temp=4) then
temp:=0;
end if;
END IF;
count_out<=temp;
END PROCESS;
ENDa;

-------------------------------------------主程序----------------------------------
LIBRARYieee;
USEieee.std_logic_1164.all;

ENTITYproject IS
PORT (clk1,rst,clk2: IN std_logic;
Out1: OUT std_logic_vector(7 downto 0);
Out2 :out std_logic_vector(6 downto0);
Out3: OUT std_logic);
ENDproject;

ARCHITECTUREstruct OF project IS
COMPONENT counter_16 IS
PORT(clk,rst : IN std_logic;
count_out : OUT integer range 0 to 15 );
ENDCOMPONENT;

COMPONENT fenpinqi IS
PORT(clk2,rst : IN std_logic;
clk_12,clk_4,clk_16,clk_8 : OUT std_logic);
END COMPONENT ;

COMPONENT counter_4 IS
PORT(clk,rst :IN std_logic;
count_out :OUT integer range 0 to 3 );

ENDCOMPONENT;

COMPONENT xzq4_1 IS
PORT
(
rst:in std_logic;
inp:in integer range 0 to 3;
in1,in2,in3,in4 : In std_logic;

output2 :OUT std_logic
);

ENDCOMPONENT;

COMPONENT caideng IS
PORT
(
input: IN INTEGER RANGE 0 TO 15;
rst:in std_logic;
output3 :OUT std_logic_vector(7 downto 0);
sm :out std_logic_vector(6 downto 0)
);

ENDCOMPONENT;

SIGNALu: integer range 0 to 15;
SIGNALw: integer range 0 to 3;
SIGNALv1,v2,v3,v4: std_logic;

BEGIN
U1:counter_16PORT MAP(clk1,rst,u);
U2:fenpinqiPORT MAP(clk2,rst, v1,v2,v3,v4);
U3:counter_4PORT MAP(v3,rst,w);
U4:xzq4_1 PORT MAP(rst,w, v1,v2,v3,v4,out3);
U5:caidengPORT MAP(u,rst,out1,out2);
ENDstruct;
2、彩灯控制器仿真结果及数据分析
分析:如上图,clk1控制的是彩灯模块,clk2控制的是声音模块,当rst为高电平是输出全为0,ck1每出现四个高电平,花型发生一次变化,out2分别显示1、2、3、4,out1显示不同的花型,out3发出声音,如图脉冲数不同表示发出的声音不同,但是声音与花型相比有一定的延迟。
六、硬件实现
1、引脚锁定图
2、硬件仿真图
显示第一组花型之一
显示第二组花型之一
显示第三组花型之一

显示的第四组花型之一

七、总体电路
整个系统就是各个分模块组成来实现最后的彩灯控制功能,系统又两个时钟来控制一个是控制16进制计数器即控制彩灯控制模块来实现彩灯的不同输出,另一个时钟为分频器的输入来进行分频处理,最后用来控制扬声器发出不同的音乐,为了使效果明显尽量达到要求分频处理的时钟的频率比实现彩灯控制的时钟频率要高。
将各个模块连在一起采用在课程中学到的元件例化,将各个模块的引脚连在一起,使之成为一个整体。元件例化是VHDL设计实体构自上而下层次化设计的重要途径。整体电路如图五—1

图七—1 整体电路图
八、心得体会
1、在设计时遇到一些主要问题如下:怎么将各个模块连在一起、开始硬件仿真时总是出现错误,设计方案的选择。最后我选择了元件例化将各个模块连在一起,仿真时是因为短路帽接错了,当时没有注意,在方案的选择时我们选了实现比较简单的分模块方案
2、这次的EDA课程设计我学到得东西很多明白了理论与实践之间的差距,而且对DEA课程有了更深入的理解,尤其是知道了怎么去应用所学的知识,怎么去利用网络实现自己的要求,具体体会如下:
(1)要想完成编程就要对DEA知识很熟悉,这样才能加快编程的速度,另外在编程时一定要小心,稍微有一点粗心都会有很多的错误出现,在出现错误后要学会寻找错误原因如名称前后不一、数据类型不同、符号写错等等
(2)拿道题目后要注意分析,要学会总体把握,然后再一一一细化、学会将复杂的问题简单化,分析时一定要有一个明确的目标。
(3)要学会理论联系实际,在程序导入到实验箱后,居然不显示结果,认真的检查看看操作是否有错误、试验箱中该短路的是否已用短路帽短路、又重新检查了一下程序,结果发现是短路帽接错了,所以看似很简单的操作自己操作起来可能会有很大的漏洞,所以亲自动手是很重要的。
(4)当自己的只是有限时,要注意运用网络等一切资源,要学会知识的灵活运用在查阅的过程中学到了很多在书本所没有学到的知识,通过查阅相关资料进一步加深了对EDA的了解
总的来说,通过这次课程设计不仅锻炼了我们的动手和动脑能力,也使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,要把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。还有最重要的一点就是要有一丝不苟的精神和端正认真的态度,遇到困难后要学会积极的面对。
3、在此设计中声音会有一定的延迟,可以考虑用花型输出信号作为4选1的控制信号
九、参考书目:
赵伟军,《Protel99se教程》,北京,人民邮电出版社,1996年
金西,《VHDL与复杂数字系统设计》,西安,西安电子科技大学出版社,2003
汉泽西,《EDA技术及其应用》,北京,北京航空航天大学出版社,2004
[4] 黄任,《VHDL入门.解惑.经典实例.经验总结》,北京,北京航空航天大学出版社,2005
[5] 李洋,《EDA技术 使用教程》,北京,机械工业出版社,2009
[6] 网络资源:EDA课程设计、EDA课程设计—彩灯控制器等

⑶ 求EDA技术实用教程(潘松第三版)箜篌习题答案,在线等

本书以掌握国内外最流行的电子设计自动化(EDA)技术为教学目标,以
培养学生的设计和应用开发能力为主线,系统地介绍EDA应用技术。
全书在取材和编排上,内容新颖、循序渐进,并注重理论联系实际。全
书共10章,主要内容包括VHDL硬件描述语言、Quartus Ⅱ等EDA工具软件、
可编程逻辑器件、实验开发系统、应用实例和综合设计实例。第4章对大量
常规的数字电路做出了VHDL描述,第7章详细阐述了9个典型数字系统的设计
方法,第9章选取了16个实验实例,第10章给出了4个代表性的全国大学生电
子设计竞赛赛题设计实例。读者完全可以通过这些实际操作,很好地掌握:
EDA的开发设计方法。每章后面附有小结和习题,便于读者学习和教学使用
。为方便教师教学,本书配有电子教案。
本书可作为高职高专及本科院校电子信息、电气、通信、自动控制、自
动化和计算机类专业的EDA技术教材,也可作为上述学科或相关学科工程技
术人员的参考书。还可作为电子产品制作、科技创新实践、EDA课程设计和
毕业设计等实践活动的指导书。

【本书目录】

第1章 EDA技术概述
1.1 EDA技术及其发展
1.1.1 EDA技术的涵义
1.1.2 EDA技术的发展史
1.2 EDA设计流程
1.3 EDA技术的主要内容及主要的EDA厂商
1.3.1 EDA技术的主要内容
1.3.2 主要EDA厂商概述
1.4 常用的EDA工具
1.5 EDA技术的发展趋势
1.5.1 可编程器件的发展趋势
1.5.2 软件开发工具的发展趋势
1.5.3 输入方式的发展趋势
1.6 EDA技术的应用
1.6.1 EDA技术的应用形式
1.6.2 EDA技术的应用场合
本章小结
思考题和习题
第2章 VHDL硬件描述语言
2.1 VHDL概述
2.1.1 常用硬件描述语言简介
2.1.2 VHDL及其优点
2.1.3 VHDL程序设计约定
2.1.4 VHDL程序设计举例
2.2 VHDL程序基本结构
2.2.1 实体
2.2.2 结构体
2.2.3 库
2.2.4 程序包
2.2.5 配置
2.3 VHDL语言要素
2.3.1 VHDL文字规则
2.3.2 VHDL数据对象
2.3.3 VHDL数据类型
2.3.4 运算操作符
2.3.5 VHDL语言结构体的描述方式
2.4 VHDL顺序语句
2.4.1 等待语句和断言语句
2.4.2 赋值语句
2.4.3 转向控制语句
2.4.4 子程序调用语句
2.4.5 返回语句
2.5 VHDL并行语句
2.5.1 进程语句
2.5.2 块语句
2.5.3 并行信号赋值语句
2.5.4 并行过程调用语句
2.5.5 元件例化语句
2.5.6 生成语句
本章小结
思考题和习题
第3章 Quartus Ⅱ软件及其应用
3.1 Quartus Ⅱ的使用及设计流程
3.1.1 Quartus Ⅱ的图形编辑输入法
3.1.2 Quartus Ⅱ的文本编辑输入法
3.2 Quartus Ⅱ设计正弦信号发生器
3.2.1 创建工程和编辑设计文件
3.2.2 编译
3.2.3 正弦信号数据ROM定制
3.2.4 仿真
3.2.5 测试
3.2.6 配置器件
3.3 MATLAB/DSP Builder设计可控正弦信号发生器
3.3.1 建立设计模型
3.3.2 Simulink模型仿真
3.3.3 SignalCompiler编译
3.3.4 使用Quartus Ⅱ实现时序仿真
3.3.5 使用Quartus Ⅱ进行硬件测试
与硬件实现
本章小结
思考题和习题
第4章VHDL应用实例
4.1 组合逻辑电路设计
4.1.1 基本门电路
4.1.2 译码器
4.1.3 编码器
4.1.4 数值比较器
4.1.5 数据选择器
4.1.6 算术运算电路
4.1.7 三态门及总线缓冲器
4.2 时序逻辑电路设计
4.2.1 时钟信号和复位信号
4.2.2 触发器
4.2.3 寄存器和移位寄存器
4.2.4 计数器
4.2.5 序列信号发生器和检测器
4.3 存储器设计
4.3.1 只读存储器ROM
4.3.2 随机存储器RAM
4.4 状态机设计
4.4.1 摩尔型状态机
4.4.2 米立型状态机
本章小结
思考题和习题
第5章 大规模可编程逻辑器件
5.1 可编程逻辑器件概述
5.2 简单可编程逻辑器件
5.3 复杂可编程逻辑器件
5.3.1 CPLD的基本结构
5.3.2 Altera公司的器件
5.4 现场可编程门阵列
5.4.1 FPGA的整体结构
5.4.2 Xilinx公司的’FPGA器件
5.4.3 FPGA的配置
5.5 在系统可编程逻辑器件
5.5.1 ispLsI/pLSI的结构
5.5.2 Lattice公司ispLSI系列器件
5.6 FPGA和CPI。D的开发应用选择
5.6.1 FPGA和CPL|D的性能比较
5.6.2 FPGA和CPLD的开发应用选择
本章小结
思考题和习题
第6章 常用印A工具软件
6.1 Altera MAX+plus Ⅱ的使用
6.1.1 MAX+plus Ⅱ功能简介
6.1.2 MAX+plus Ⅱ设计流程
6.1.3 MAX+plus Ⅱ设计举例
6.2 Xilinx Foundation的使用
6.2.1 Foundation设计流程
6.2.2.Foundation设计举例
6.3 ModelSim的使用
6.3.1 ModelSim的使用方法
6.3.2 ModelSim与MAX-+Iplus Ⅱ的接口
6.3.3 ModelSim交互命令方式仿真
6.3.4 ModelSim批处理工作方式。
本章小结
思考题和习题
第7章 EDA技术综合设计应用
7.1 数字闹钟的设计
7.1.1 系统的设计要求
7.1.2 系统的总体设计
7.1.3 闹钟控制器的设计
7.1.4 译码器的设计
7.1.5 键盘缓冲器(预置寄存器)的设计
7.1.6 闹钟寄存器的设计
7.1.7 时间计数器的设计
7.1.8 显示驱动器的设计
7.1.9 分频器的设计
7.1.10 系统的整体组装
7.1.11 系统的硬件验证
7.2 多功能信号发生器的设计
7.2.1 设计要求
7.2.2 设计实现
7.2.3 系统仿真
7.3 序列检测器的设计
7.3.1 设计思路
7.3.2 VHDL程序实现
7.3.3 硬件逻辑验证
7.4 交通灯信号控制器的设计
7.4.1 设计思路
7.4.2 VHDL程序实现
7.4.3 硬件逻辑验证
7.5 空调系统有限状态自动机的设计
7.5.1 设计思路
7.5.2 VHDL程序实现
7.6 电梯控制系统的设计
7.6.1 设计要求
7.6.2 设计实现
7.6.3 系统仿真
7.7 步进电机控制电路的设计
7.7.1 步进电机的工作原理
7.7.2 驱动电路的组成及VHDL实现
7.8 智力竞赛抢答器的设计
7.8.1 设计思路
7.8.2 VHDL程序实现
7.9 单片机与FPGA/CPLD总线接口的设计
7.9.1 设计思路
7.9.2 VHDL程序实现
本章小结
思考题和习题
第8章 EDA实验开发系统
8.1 GW48型EDA实验开发系统原理与使用
8.1.1 系统性能及使用注意事项
8.1.2 系统工作原理
8.1.3 系统主板结构与使用方法
8.2 GW48实验电路结构图
8.2.1 实验电路信号资源符号图说明
8.2.2各实验电路结构图特点与适用范围简述
8.3 GW48系统结构图信号名与芯片引脚对照表
8.4 GWDVP?B电子设计竞赛应用板 使用说明
8.5 GW48型EDA实验开发系统使用实例
本章小结
思考题和习题
第9章 EDA技术实验
实验1 8位全加器的设计
实验2 组合逻辑电路的设计
实验3 触发器功能的模拟实现
实验4 计数器的设计
实验5 计数译码显示电路
实验6 数字钟综合实验
实验7 序列检测器的设计
实验8 简易彩灯控制器
实验9 正负脉宽数控调制信号发生器的设计
实验10 数字秒表的设计
实验11 交通灯信号控制器的设计
实验12 模拟信号检测
实验13 4位十进制频率计设计
实验14 VGA显示器彩条信号发生设计
实验15 A/D转换控制器的设计
实验16 音乐发生器的设计
第10章 EDA技术在全国大学生电子设计竞赛中的应用
10.1 等精度频率计设计
10.1.l 系统设计要求
10.1.2 系统组成
10.1.3 工作原理
10.1.4 FPGA开发的VHDL设计
10.1.5 系统仿真
10.1.6 系统测试与硬件验证
10.1.7 设计技巧分析及系统扩展思路
10.2 测相仪设计
10.2.1 测相仪工作原理及实现
10.2.2 系统测试
10.3 基于DDS的数字移相正弦信号发生器设计
10.3.1 系统设计要求
10.3.2 系统设计方案
10.3.3 DDS内部主要模块的VHDL程序实现
10.3.4 系统仿真与硬件验证
10.3.5 设计技巧分析与系统扩展思路
10.4 逻辑分析仪设计
10.4.1 设计任务
lO.4.2 设计基本要求
10.4.3 设计实现
附录 常用FPGA/CPLD管脚图

⑷ 跪求:《数字频率计的设计》 原理,方框图,电路图!

摘 要:文中运用VHDL语言,采用Top To Down的方法,实现8位数字频率计,并利用Isp Expert集成开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,经实际电路测试,该系统系统性能可靠。
关键词:EDA;VHDL;数字频率计;波形仿真;CPLD�
1引言
VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)诞生于1982年,是由美国国防部开发的一种快速设计电路的工具,目前已经成为IEEE(The Institute of Electrical and Electronics Engineers)的一种工业标准硬件描述语言。相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(Top to Down)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言。将使整个系统大大简化。提高整体的性能和可靠性。
本文用VHDL在CPLD器件上实现一种8 b数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。具有体积小、可靠性高、功耗低的特点。
2数字频率计的基本设计原理
数字频率计的原理框图如图1所示。他主要由5个模块组成,分别是:脉冲发生器电路、测频控制信号发生器电路、计数模块电路、锁存器、译码驱动电路。�

当系统正常工作时,脉冲发生器提供的1 Hz的输入信号,经过测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果。�
3设计实现�
3.1系统方框图的划分和结构设计
根据数字频率计的系统原理框图(图1虚线框内),设计系统的顶层电路图如图2所示。�

图2中TESTCTL为测频控制信号发生器。TESTCTL的计数使能信号TSTEN能产生一个1 s宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制:当TSTEN高电平时允许计数、低电平时停止计数。
REG32B为锁存器。在信号Load的上升沿时,立即对模块的输入口的数据锁存到REG32B的内部,并由REG32B的输出端输出,然后,七段译码器可以译码输出。在这里使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。
CNT10为十进制计数器。有一时钟使能输入端ENA,用于锁定计数值。当高电平时允许计数,低电平时禁止计数。图2中将8个十进制计数器CNT10级联起来实现8 b十进制计数功能。
SEVYM为七段译码显示驱动电路,可以将频率计数的结果译成能在数码管上显示相对应的阿拉伯数字,便于读取测量的结果。
为了实现系统功能,测频控制信号发生器TESTCTL、计数器CNT10、锁存器REG32B存在一个工作时序的问题,设计时需要综合考虑。
图3给出了系统的工作时序。图3中CLK是由图1中脉冲发生器产生的频率为1 Hz的标准时钟信号,当测频控制信号发生器TESTCTL的TSTEN端为高电平时允许计数、低电平时停止计数,在停止计数期间,测频控制信号发生器TESTCTL的Load端产生一个上升沿,将计数器在前1 s的计数值锁存进32 b锁存器REG32B中,并由8个7段译码器将计数结果译出稳定显示。锁存信号之后经过半个CLK周期,测频控制信号发生器TESTCTL的CLR�_CNT端产生一个上升沿,对计数器进行清零。为下1 s的计数操作做准备。
为了产生这个时序图,首先有一个D触发器构成二分频器,在每次时钟CLK的上升沿到来使其值翻转。D触发器的输出高电平正好是1 s,因此可以作为测频控制信号发生器TESTCTL的TSTEN端,用来控制计数。而Load信号正好是TSTEN端信号的翻转。在计数结束后半个CLK周期,CLK与TSTEN都为低电平,这时CLR�_CNT产生一个上升沿作为清零信号。�

3.2各模块的VHDL源程序
采用VHDL描述数字频率计的电路时,根据图2所示的数字频率计系统顶层电路图,按照自顶向下的设计思路,编写各个模块的VHDL源程序,最后再对各个模块进行组合,编写顶层描述的VHDL源程序,由于篇幅所限,本文仅介绍数字频率计顶层描述的源程序,各个模块的VHDL源程序编写较为简单,可以根据各自的功能,相应地写出。
8位数字频率计的顶层描述VHDL源程序为:

4系统的功能仿真
Lattice公司推出的Isp Expert的数字系统设计软件,是一套完整的EDA软件,能够对所设计的数字电子系统进行时序仿真和功能仿真。
采用Lattice公司推出的Isp Expert EDA软件,对所编写数字频率计VHDL源程序进行编译、逻辑综合,自动地把VHDL描述转变为门级电路。然后进行波形仿真,编写的仿真测试向量文件如下(为仿真简单起见,测试一个66 Hz的周期信号):

仿真后得到的波形图如图4所示,从仿真波形上看测量的结果是准确的。还可以进一步修改测试向量文件,进行波形仿真。最后通过编程电缆,将所设计的内容下载到CPLD器件中,进行实物仿真。�

5结语
本文介绍了使用VHDL语言设计数字频率计的方法,并下载到CPLD中组成实际电路,这样可以简化硬件的开发和制造过程,而且使硬件体积大大缩小,并提高了系统的可靠性。同时在基本电路模块基础上,不必修改硬件电路,通过修改VHDL源程序,增加一些新功能,满足不同用户的需要,实现数字系统硬件的软件化。

⑸ 怎么样用VHDL语言设计出租车计价器 - 知乎

设计一个出租车计费器的目标是用VHDL语言在EDA实训仪的I/O设备和FPGA上实现。性能指标需满足:计费器从起步开始计程和计费,起步价为7元,2公里内只收起步价,超过2公里后按每公里1.6元计费,超过10公里或20元后,每公里加收50%,变为每公里2.4元。达到目的地后,按钮操作清零,准备下一次计费。

设计思路包括计程和计费的十进制输入,通过脉冲实现计数。计程利用分频器输出秒脉冲进行计数。计费在LED数码管上显示,分为个位和十位,计程器和计费器在同一个程序内完成,分频器由另一个程序驱动,两个程序以图形法级联。上硬件仿真后,输入脉冲上升沿触发路程计算加一,并使总路程计算模块加一,根据公里数的不同,每公里收费随之改变。

详细设计包括分频器模块和计程计费器模块。分频器模块在每次脉冲上升沿时,若达到预设值则清零,否则计数加一,并产生1秒脉冲。计程计费器模块通过输入脉冲控制路程计算,同时更新显示的总费用,根据路程的不同阶段调整费用计算。

调试过程中,遇到的挑战主要在编程代码和编译过程中的错误,尤其是在always@(*)语句上。在向老师求助后,加入组合逻辑模块,修改了程序,解决了编译问题。将修改后的程序下载到硬件中,路程计算功能正常运行,计费功能也按要求工作,达到了验收标准。

完成功能测试后,验证了计费器能正确计算路程和费用,并在按下按键后能清零数据。使用计算机和EDA实训仪进行性能指标测试,结果显示,随着路程递增,费用递增符合设计要求,按下按键可自行增加路程。

如果需要完整的资料,包括VHDL代码、仿真波形图等,可以加入特定的圈子获取资源。加入圈子的方式可能需要通过纷传应用进行,二维码扫描也可作为另一种接入方式。请注意,具体接入流程和细节可能会根据实际操作环境有所不同。

阅读全文

与EDA程序设计一个30分频器相关的资料

热点内容
ps邀请函制作教程 浏览:23
rp管螺纹怎么编程 浏览:823
linuxssh下载文件 浏览:765
如何进行光盘数据迁移 浏览:614
编程怎么搭建网站 浏览:481
webjspwebinf 浏览:520
软件系统文件夹怎么用 浏览:126
数据库应用技术中级证书有什么用 浏览:811
数据存储方式有哪些网络存储 浏览:552
苍穹数据服务云都有哪些 浏览:257
简历表格下载word格式百度文库 浏览:674
word修改软件 浏览:266
网络攻击问题有哪些 浏览:446
win10缺少配置文件 浏览:295
php连接数据库的配置文件 浏览:801
jsp获取request中的值 浏览:986
jsp中layershow 浏览:679
贝尔金数据线多少钱 浏览:477
微信扣扣电视剧都没声是怎么回事 浏览:329
如何用电脑复制文件到优盘 浏览:537

友情链接