eda课程设计

发布 2022-09-30 20:04:28 阅读 6669

基于cpld的信号发生器设计

摘要:本文给出了一种采用cpld作为主控器的信号发生器设计方案。由于采用eda技术进行设计,该方案具有工作速度快,硬件体积小,可靠性高等优点。

关键词:信号发生器;vhdl ;eda ;cpld

1 引言。随着社会的发展,人们对生活的要求也逐步提高,也越来越希望在各个方面都有很大的提高,尤其是在信号方面,信号发生器作为提供测试用电信号的仪器必不可少。传统信号发生器要用模拟器件来实现,后来出现了用数字电路来设计的方案,例如采用单片机等。

eda技术的出现与可编程器件的应用改变了数字电路的设计方法。采用可编程器件进行项目开发具有费用低、开发时间短的特点,有利于新产品占领市场。本文给出了一种采用cpld作为主控部件的信号发生器设计方案,在设计输入时采用vhdl进行描述,再连入外围电路与cpld构建起整个系统。

2 系统设计。

2.1 设计要求。

信号发生器能够产生正弦波、方波、三角波,并可通过开关选择输出波形。

2.2 设计思路

根据设计要求,智能信号发生器由4部分组成,既电源模块、时钟信号发生器、主控器、d/a转换模块,系统结构如图1所示。晶体振荡器产生稳定度很高的时钟信号,在时钟信号的作用下,主控器产生频率可变的波形数据信号,经数/摸转换电路最终输出所需要的波形。

图1 系统结构框图

2.3 模块设计。

2.3.1 主控器设计。

在主控器内部也共有四个模块,既三角波模块,正弦波模块,方波模块和一个控制模块,通过编程可以分别设计这四个模块。

图3 cpld内部控制原理图。

2.3.1.1 三角波模块

三角波模块是在设计时置一变量作为工作状态标志,在此变量全为0时,当检测到时钟的上升沿时进行加同一个数操作,全为0时,进行减同一个数操作。由于a/d转换采用12位的adc7545芯片,且设64个时钟为一个三角波周期,输出每次加/减8。设计程序如下:

library ieee;

use use

entity delta is

port(clk,reset:in std_logic;

q: out std_logic_vector(7 downto 0));

end delta ;

architecture beh**e of delta is

beginprocess(clk,reset)

variable tmp: std_logic_vector(7 downto 0);

variable a: std_logic;

beginif reset=’0’then

tmp:=”00000000”;

elsif clk’event and clk=’1’then

if a=’0’ then

if tmp=”11111110”then

tmp:=”11111111”;

a:=’1’;

elsetmp:=tmp+1递增运算。

end if;

elseif tmp=”00000001”then

tmp:=”00000000”;

a:=’0’;

elsetmp:=tmp-1递减运算。

end if;

end if;

end if;

q<=tmp;

end process;

end beh**e;

2.3.1.2 正弦波模块

正弦波模块是对一个正弦波周期分为64个采样点,然后量化为8位2进制数据,最大值为255,最小值为0,由此得到正弦波表,经d/a转换得到波形。设计程序为:

library ieee;

use use

entity sin is

port(clk,clr:in std_logic;

d: out integer range 0 to 255);

end sin;

architecture beh**e of sin is

beginprocess(clk,clr)

variable tmp: integer range 0 to 63;

beginif clr=’0’then

d<=0;

elsif clk’event and clk=’1’then

if tmp=63 then一个周期取64点。

tmp:=0;

elsetmp:=tmp+1;

end if;

case tmp is查表输出。

when 00=>d<=255; when 01=>d<=254;

when 02=>d<=252; when 03=>d<=249;

when 04=>d<=245; when 05=>d<=239;

when 06=>d<=233; when 07=>d<=225;

when 08=>d<=217; when 09=>d<=207;

when 10=>d<=197; when 11=>d<=186;

when 12=>d<=174; when 13=>d<=162;

when 14=>d<=150; when 15=>d<=137;

when 16=>d<=124; when 17=>d<=112;

when 18=>d<=99; when 19=>d<=87;

when 20=>d<=75; when 21=>d<=64;

when 22=>d<=53; when 23=>d<=43;

when 24=>d<=34; when 25=>d<=26;

when 26=>d<=19; when 27=>d<=13;

when 28=>d<=8; when 29=>d<=4;

when 30=>d<=1; when 31=>d<=0;

when 32=>d<=0; when 33=>d<=1;

when 34=>d<=4; when 35=>d<=8;

when 36=>d<=13; when 37=>d<=19;

when 38=>d<=26; when 39=>d<=34;

when 40=>d<=43; when 41=>d<=53;

when 42=>d<=64; when 43=>d<=75;

when 44=>d<=87; when 45=>d<=99;

when 46=>d<=112; when 47=>d<=124;

when 48=>d<=137; when 49=>d<=150;

when 50=>d<=162; when 51=>d<=174;

when 52=>d<=186; when 53=>d<=197;

when 54=>d<=207; when 55=>d<=217;

when 56=>d<=225; when 57=>d<=233;

when 58=>d<=239; when 59=>d<=245;

when 60=>d<=249; when 61=>d<=252;

when 62=>d<=254; when 63=>d<=255;

end case;

end if;

end process;

end beh**e;

2.3.1.3 方波模块

方波模块设计是交替送出全0和全1,并以32个延时实现,64个时钟为一个周期。设计程序为:

library ieee;

use entity square is

port(clk,clr:in std_logic;

q: out integer range 0 to 255);

end square;

architecture beh**e of square is

signal a:bit;

beginprocess(clk,clr)

variable cnt: integer ;

EDA课程设计

题目一 数字钟设计 学号1 15 一 实验目的。学习并掌握数字钟的原理 设计方法。二 实验内容。计数始终由模60秒计数器 模60分计数器 模24小时计数器 报时模块 分 时设定模块及输出显示模块构成。可以采用同步计数器或异步计数器设计方法。三 实验要求。计时范围为0小时0分0秒至23小时59分59秒...

eda课程设计

哈尔滨工业大学 威海 信电学院电子信息工程。一 软硬件介绍。1软件部分介绍。1.1 quartus ii 是altera公司的综合性pld fpga开发软件,支持原理图 vhdl veriloghdl以及ahdl altera hardware description language 等多种设计输...

eda课程设计

目录。1 引言 2 1.1 课程设计的目的与任务 2 1.2 课程设计的内容 2 1.3课程设计仪器设备 2 1.4 课程设计的题目 2 1.5 方案的选择 2 2设计方案 3 2.1 设计原理 3 2.2各功能模块的原理及其源程序 3 2.2.1控制模块 3 2.2.2分频模块 4 2.2.3计时...