EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx

上传人:b****5 文档编号:11821373 上传时间:2023-04-03 格式:DOCX 页数:23 大小:462.90KB
下载 相关 举报
EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx_第1页
第1页 / 共23页
EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx_第2页
第2页 / 共23页
EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx_第3页
第3页 / 共23页
EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx_第4页
第4页 / 共23页
EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx

《EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx》由会员分享,可在线阅读,更多相关《EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx(23页珍藏版)》请在冰豆网上搜索。

EDA交通灯控制器+函数信号发生器+乐曲演奏电路.docx

EDA交通灯控制器+函数信号发生器+乐曲演奏电路

EDA交通灯控制器+函数信号发生器+乐曲演奏电路

部门:

xxx

时间:

xxx

制作人:

xxx

 

整理范文,仅供参考,可下载自行修改

 

EDA课程设计

 

题目一:

交通灯控制器VHDL的设计

题目二:

智能函数发生器

题目三:

乐曲硬件演奏电路的VHDL设计

 

专业:

通信工程

班级:

通信084班

 

一、设计题目:

交通灯控制器VHDL的设计

二、设计目标

1、设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

b5E2RGbCAP

2、红、绿、黄发光二极管作信号灯,。

3、主干道处于常允许通行的状态,支干道有车来时才允许通行。

主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

p1EanqFDPw

4、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。

DXDiTa9E3d

5、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

RTCrpUDGiT

三、设计原理

主系统由三个模块组成,jtd.vhd为顶层文件,其内部包含三个功能模块模块:

信号灯主控模块

5PCzVD7HxA

1、选择1HZ时钟脉冲作为系统时钟。

2、45秒、25秒、5秒定时信号用倒计时,计时起始信号由主控电路给出,每当计满所需时间,即向主控电路输出“时间到”信号,转换信号灯状态,由主控电路启、闭三色信号灯jLBHrnAILg

显示结果:

十字路口的交通灯控制信号由主控电路给出,能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。

用两组红、黄、绿三种颜色的灯分别作为东西、南北两个方向的红、黄、绿灯,变化规律为:

东西绿灯亮,南北红灯亮→东西黄灯亮,南北红灯亮→东西红灯亮、南北绿灯亮→东西红灯亮,南北黄灯亮→东西绿灯亮,南北红灯亮….,这样依次循环。

xHAQX74J0X

东西方向是主干道车道,南北方向是支干道车道,要求两条交叉道路上的车辆交替运行,主干道每次通行时间都设为45秒,支干道每次通行时间都设为25秒。

LDAYtRyKfE

在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。

要求交通灯控制器有复位功能,在复位信号使能的情况下能够实现交通灯的自动复位,并且要求所有交通灯的状态变化,包括复位信号引起的均发生时钟脉冲的上升沿处。

Zzz6ZB2Ltk

四、设计内容

1.信号灯主控模块moore.vhd

设计一个Morre型状态机,是一个4状态的状态机,输出ld0控制减法计数器,在减法计数器减计数到6或1时,计数器输出1,将计数器的输出输入到Moore型状态机c0中来实现状态机的输入控制,再通过状态机的输出来控制计数器的计数值。

即原理相同于S0为东西方向的绿灯控制及南北方向的红灯控制,计数时间为45秒;S1为东西方向黄灯控制及南北方向的红灯控制,计数时间为5秒;S2为南北方向的绿灯控制及东西方向的红灯控制,计数时间为25秒;S3为南北方向的黄灯及东西方向的红灯控制,计数时间为5秒。

状态图如下:

dvzfvkwMI1

rqyn14ZNXI

2.减法计数器的设计jishu.vhd

减法计数器设计,用dinh1和dinl1来设置所需要的计数数值,ld1为初始化计数数值,当减法计数器减到设置的6或1时,C1输出为1,其他时间均为0。

Qh1和ql1为计数器的计数输出。

EmxvxOtOco

3.译码器的设计led7s.vhd

译码器是一个简单的LED的显示的译码,为4—7译码器。

五、仿真结果

一、设计题目:

智能函数发生器

二、设计目标

设计一个智能函数发生器,能够以稳定的频率发生递增斜波、递减斜波、三角波、梯形波,正弦波和方波。

设置一个波形选择输入信号,通过此改变该信号可以选择以上各种不同种类的输出函数波形,系统具有复位功能。

SixE2yXPq5

三、设计原理

主系统由7个模块组成,singt.vhd为顶层设计文件,其内部有七个功能模块:

波形选择模块

6ewMyirQFL

智能函数发生器原理图

四、设计内容

1.递减模块的设计jianxie.vhd

递减模块的设计,递减模块是用VHDL程序描述的递增函数,它的实体部分部分说明三个端口,其中两个输入端口时钟信号clk3、复位信号rst3和一个输出端口jout3。

结构体部分定义一个8位二进制变量,然后使用进程语句,设定敏感信号clk3和rst3,通过设计一个中间变量从00000101到00000000的递减赋值给输出信号jout3,编译无误后,即额可以创建递减元件符号。

kavU42VRUs

2.递增模块的设计zengxie.vhd

递增模块的设计与递减模块相似,其中两个输入端口时钟信号clk2、复位信号rst2和一个输出端口zout2。

结构体部分定义一个8位二进制变量,然后使用进程语句,设定敏感信号clk2和rst2,通过设计一个中间变量从00000000到00000101的递增赋值给输出信号zout2,编译无误后,即额可以创建递增元件符号。

y6v3ALoS89

3.三角波模块的设计rect.vhd

三角波模的设计完成功能异步复位和三角波的形成,程序定义两个中间变量,一个中间变量即为输出赋值,另一个完成三角波分段,当p为0时,完成三角波的前段从00000000到00000101递增;当p为1时,完成后段的从00000101到00000000的递减,形成一个完整的三角波。

M2ub6vSTnP

4.梯形波模块的设计trap.vhd

梯形波模块的设计通过运用case语句,设计三个状态,使信号在“00”状态时从00000000到00000101递增,在“01”状态时保持00000101,在“10”状态

时从00000101到00000000递减,形成一个完整的梯形波。

0YujCfmUCw

5.方波模块的设计reta.vhd

方波模块即是完成方波输出地设计,以及有异步复位的功能,该程序采用了两个进程语句,第一个进程是完成在时钟上升沿同步时,r<6时输出rout1=00000110,否则输出rout1=00000000。

在第二个进程中,完成在时钟上升沿的时候,r从00000000递增到00001011,创建的元件符号同样是三个端口,即时钟信号clk1和复位信号rst1,以及一个8位二进制的输出端口rout1。

eUts8ZQVRd

6.正弦波模块的设计sindata.vhd

正弦波的设计是通过建立正弦波形数据、定制LPMROM来实现的。

7.选择模块的设计wavsel.vhd

选择模块的设计通过运用case语句,设计六个状态,通过控制输入信号key

11、key22、key33,选择输出波形。

“000”输出递增斜波,“001”输出递减斜波,“010输出”方波,“011”输出梯形波,“100”输出三角波,“101”输出正弦波。

sQsAEJkW5T

五、仿真结果

1.递增斜波

2.递减斜波

3.方波

4.梯形波

5.三角波

6.正弦波

一、设计题目:

乐曲硬件演奏电路的VHDL设计

二、设计目标

能够播放“梁祝”乐曲。

<2)能够通过LED显示音阶。

<3)具有“播放/停止”功能,并在此基础上实现“按键演奏”的电子琴功能。

GMsIasNXkA

三、设计原理

主系统由三个模块组成,songer.vhd为顶层设计文件,其内部有三个功能模块:

tonetaba.vhd、notetabs.vhd和speakera.vhd。

TIrRGchYzg

我们知道,组成乐曲的每个音符的发音频率值及其持续时间是乐曲能连续演奏所需的两个基本要素,问题是如何来获取了这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值事先所希望乐曲的演奏效果。

原理图中,模块U1类似于探亲人的手指;U2类似于琴键;U3类似于琴弦或音调发生器。

7EqZcWLZNX

四、设计类容

1.数控分频器模块Speakera.vhd

这是一个数控分频器,有其clk端输入已具有较高频率<这里是12MHz)的信号,通过Speakera分频后又SPKOUT输出。

Speakera对clk输入信号的分频比由11位预置数Tone[10..0]决定。

lzq7IGf02E

2.按键模块ToneTaba.vhd

模块ToneTaba的功能首先是为Speakera提供决定所发音符的分频预置数,而此数在Speakera输入口停留的时间即为此音符的节拍值。

模块ToneTaba是乐曲简谱码对应得分频预置数查表电路,其中预置了“梁祝”乐曲全部音符所对应的分频预置数,共13个,这13个值的输出有对应于ToneTaba的4位输入值Index[3..0]确定。

zvpgeqJ1hk

3.输入控制模块NoteTabs.vhd

在NoteTabs中设置了一个8位二进制计数器,作为音符数据ROM的地址发生器。

这个计数器的计数频率选为4Hz,即每一计数值得停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。

rst0具有“播放停止”功能。

当kz=‘1’时,shuru1、shuru2、shuru2、shuru3实现“按键演奏”功能。

NrpoJac3v1

五、仿真结果

1.自动播放

2.按键演奏

六、总结

通过编译原理课程设计,掌握了什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的理解,课本上的知识是机械的,表面的。

把原来以为很深奥的书本知识变的更为简单,对实验原理有更深的理解。

通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。

这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响。

1nowfTG4KI

而且,这对于我们的将来也有很大的帮助。

以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。

就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。

fjnFLDa5Zo

七、附录

(一>交通灯控制器VHDL的设计

1.交通灯顶层文件jtd.vhd

libraryieee。

useieee.std_logic_1164.all。

useieee.std_logic_unsigned.all。

entityjtdis

port(clk:

instd_logic。

rst:

instd_logic。

red_east,yellow_east,green_east,red_north,yellow_north,green_north:

outstd_logic。

tfnNhnE6e5

ten_east,one_east,ten_north,one_north:

outstd_logic_vector(6downto0>>。

HbmVN777sL

end。

architectureoneofjtdis

componentmoore

port(clk0,rst0,c0:

instd_logic。

ld0:

outstd_logic。

red_east1,yellow_east1,green_east1,red_north1,yellow_north1,green_north1:

outstd_logic。

V7l4jRB8Hs

dinl0,dinh0:

outstd_logic_vector(3downto0>>。

endcomponent。

componentjishu

port(clk1:

instd_logic。

ld1:

instd_logic。

dinl1:

instd_logic_vector(3downto0>。

dinh1:

instd_logic_vector(3downto0>。

ql1:

outstd_logic_vector(3downto0>。

qh1:

outstd_logic_vector(3downto0>。

c1:

outstd_logic>。

endcomponent。

componentled7s

port(a:

instd_logic_vector(3downto0>。

led7s:

outstd_logic_vector(6downto0>>。

endcomponent。

signalc,ld:

std_logic。

signaldinl,dinh,led7sh,led7sl:

std_logic_vector(3downto0>。

83lcPA59W9

begin

u1:

mooreportmap(clk0=>clk,rst0=>rst,c0=>c,ld0=>ld,dinl0=>dinl,dinh0=>dinh,red_east1=>red_east,yellow_east1=>yellow_east,green_east1=>green_east,red_north1=>red_north,yellow_north1=>yellow_north,green_north1=>green_north>。

mZkklkzaaP

u2:

jishuportmap(clk1=>clk,ld1=>ld,dinl1=>dinl,dinh1=>dinh,qh1=>led7sh,ql1=>led7sl,c1=>c>。

AVktR43bpw

u3:

led7sportmap(a=>led7sh,led7s=>ten_east>。

u4:

led7sportmap(a=>led7sl,led7s=>one_east>。

u5:

led7sportmap(a=>led7sh,led7s=>ten_north>。

u6:

led7sportmap(a=>led7sl,led7s=>one_north>。

end。

2.Morre型状态机的设计moore.vhd

libraryieee。

useieee.std_logic_1164.all。

useieee.std_logic_unsigned.all。

entitymooreis

port(clk0,rst0,c0:

instd_logic。

ld0:

outstd_logic。

red_east1,green_east1,yellow_east1,red_north1,green_north1,yellow_north1:

outstd_logic。

ORjBnOwcEd

dinl0,dinh0:

outstd_logic_vector(3downto0>>。

end。

architectureoneofmooreis

typest_typeis(s0,s1,s2,s3>。

signalc_st:

st_type。

signalclk2:

std_logic。

begin

process(clk0,rst0>

begin

ifrst0='0'then

c_st<=s0。

dinh0<="0100"。

dinl0<="0101"。

ld0<='0'。

red_east1<='0'。

yellow_east1<='0'。

green_east1<='1'。

red_north1<='1'。

yellow_north1<='0'。

green_north1<='0'。

2MiJTy0dTT

elsifclk0'eventandclk0='1'then

casec_stis

whens0=>ifc0='1'thenc_st<=s1。

dinh0<="0000"。

dinl0<="0101"。

ld0<='0'。

gIiSpiue7A

elsec_st<=s0。

ld0<='1'。

endif。

red_east1<='0'。

yellow_east1<='0'。

green_east1<='1'。

red_north1<='1'。

yellow_north1<='0'。

green_north1<='0'。

uEh0U1Yfmh

whens1=>ifc0='1'thenc_st<=s2。

dinh0<="0010"。

dinl0<="0101"。

ld0<='0'。

IAg9qLsgBX

elsec_st<=s1。

ld0<='1'。

endif。

red_east1<='0'。

yellow_east1<='1'。

green_east1<='0'。

red_north1<='1'。

yellow_north1<='0'。

green_north1<='0'。

WwghWvVhPE

whens2=>ifc0='1'thenc_st<=s3。

dinh0<="0000"。

dinl0<="0101"。

ld0<='0'。

asfpsfpi4k

elsec_st<=s2。

ld0<='1'。

endif。

red_east1<='1'。

yellow_east1<='0'。

green_east1<='0'。

red_north1<='0'。

yellow_north1<='0'。

green_north1<='1'。

ooeyYZTjj1

whens3=>ifc0='1'thenc_st<=s0。

dinh0<="0100"。

dinl0<="0101"。

ld0<='0'。

BkeGuInkxI

elsec_st<=s3。

ld0<='1'。

endif。

red_east1<='1'。

yellow_east1<='0'。

green_east1<='0'。

red_north1<='0'。

yellow_north1<='1'。

green_north1<='0'。

PgdO0sRlMo

whenothers=>red_east1<='0'。

yellow_east1<='0'。

green_east1<='1'。

red_north1<='1'。

yellow_north1<='0'。

green_north1<='0'。

ld0<='0'。

3cdXwckm15

endcase。

endif。

endprocess。

end。

3.减法计数器的设计jishu.vhd

libraryieee。

useieee.std_logic_1164.all。

useieee.std_logic_unsigned.all。

entityjishuis

port(clk1:

instd_logic。

ld1:

instd_logic。

dinl1:

instd_logic_vector(3downto0>。

dinh1:

instd_logic_vector(3downto0>。

ql1:

outstd_logic_vector(3downto0>。

qh1:

outstd_logic_vector(3downto0>。

c1:

outstd_logic>。

end。

architectureoneofjishuis

signalqa,qat:

std_logic_vector(3downto0>。

signalqb,qbt:

std_logic_vector(3downto0>。

signalca,cb:

std_logic。

begin

qh1<=qb。

ql1<=qa。

process(clk1>

begin

qat<=dinl1。

ifclk1'eventandclk1='1'then

ifld1='0'thenqa<=qat。

ca<='0'。

elsif(qa="0000">thenqa<="1001"。

ca<='0'。

elsif(qa="0001">thenca<='1'。

qa<="0000"。

elseqa<=qa-1。

ca<='0'。

endif。

endif。

endprocess。

process(ca,clk1>

begin

qbt<=dinh1。

ifclk1'eventandclk1='1'then

ifld1='0'thenqb<=qbt。

cb<='0'。

c1<='0'。

elsif(qb="0000"andqa="0001">thenc1<='0'。

elsif(qb="0000"andqa="0010">thenc1<='1'。

elsif(qb="0000"andqa="1000">thenc1<='1'。

elsif(qb="0000"andqa="0111">thenc1<='0'。

elsif(ca='1'>thenqb<=qb-1。

endif。

endif。

endprocess。

end。

4.译码器的设计led7s.vhd

libraryieee。

useieee.std_logic_1164.all。

entityled7sis

port(a:

instd_logic_vector(3downto0>。

led7s:

outstd_logic_vector(6downto0>>。

endled7s。

architectureoneofled7sis

begin

process(a>

begin

caseAis

when"0000"=>led7s<="0111111"。

when"0001"=>led7s<="0000110"。

h8c52WOngM

when"0010"=>led7s<="1011011"。

when"0011"=>led7s<="1001111"。

v4bdyGious

when"0100"=>led7s<="1100110"。

when"0101"=>led7s<="1101101"。

J0bm4qMpJ9

when"0110"=>led7s<="1111101"。

when"0111"=>led7s<="0000111"。

XVauA9grYP

when"1000"=>led7s<="1111111"。

when"1001"=>led7s<="1101111"。

bR9C6TJscw

when"1010"=>led7s<="1110111"。

when"1011"=>led7s<="1111100"。

pN9LBDdtrd

when"1100"=>led7s<="0111001"。

when"1101"=>led7s<="1011110"。

DJ8T7nHuGT

when"11

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1