




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课课 程程 设设 计计 课程名称_ eda 技术 _ 题目名称_ verilog 设计电子琴和交通灯控制系统_ 学生学院_ _ 专业班级_ _ 学 号 学生姓名 指导教师 2 2011 年 12 月 22 日 引言引言 .3 一、课题的背景一、课题的背景 .3 二、二、eda 技术概述技术概述.3 三、课程设计环境三、课程设计环境 .4 多功能电子琴系统的设计多功能电子琴系统的设计 .4 一、设计目的一、设计目的 .4 二、设计要求二、设计要求 .4 三、方案设计三、方案设计 .4 四、系统软件设计四、系统软件设计 .5 1、音调发生模块、分频模块、音调发生模块、分频模块 .5 五、软件仿真调
2、试五、软件仿真调试 .5 六、设计总结六、设计总结 .5 参考文献参考文献 .6 十字路口交通灯控制系统设计十字路口交通灯控制系统设计 .6 一、设计目的和要求一、设计目的和要求 .6 二、系统方案设计二、系统方案设计 .6 2.1 设计思路设计思路 .6 2.2 系统设计框图系统设计框图 .7 三、交通信号控制器具体模块设计三、交通信号控制器具体模块设计 .8 3.1 时钟分频模块设计时钟分频模块设计 .8 3.2 控制模块设计控制模块设计 .8 三、交通信号控制器功能软件设计仿真与测试三、交通信号控制器功能软件设计仿真与测试 .9 1、仿真及测试、仿真及测试 .9 五、设计总结五、设计总结
3、 .10 参考文献参考文献 .11 六、附录程序:.11 3 引言引言 随着电子技术的发展,现场可编程门阵列 fpga 和复杂可编程逻辑器件 cpld 的出现, 使得电子系统的设计者利用与器件相应的电子 cad 软件,在实验室里就可以设计自己的专 用集成电路 asic 器件。这种可编程 asic 不仅使设计的产品达到小型化、集成化和高可靠 性,而且器件具有用户可编程特性,大大缩短了设计周期,减少了设计费用,降低了设计 风险。目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至 下地逐层完成相应的描述综合优化仿真与验证,直到生成器件,实现电子设计自动 化。其中电子设计自动化(
4、eda)的关键技术之一就是可以用硬件描述语言(hdl)来描述 硬件电路。vhdl 支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、 修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的 再利用等优点。 一、课题的背景一、课题的背景 二十一世纪是信息化高速发展的世纪,产业的信息化离不开硬件芯片的支持。芯片技 术的进步是推动全球信息化的动力。因此在二十一世纪掌握芯片技术是十分有必要的。本 次课题是计算机组成原理的课程设计,这次课题旨在通过自己对所需功能芯片的设计与实 现来巩固以前所学的计算机硬件基础知识,同时也提高动手实践的能力,还有为将来进行 更大规模更
5、复杂的开发积累经验。 二、二、eda 技术技术概述概述 eda 是电子设计自动化(electronic design automation)缩写,是 90 年代初从 cad(计算机辅助设计) 、cam(计算机辅助制造) 、cat(计算机辅助测试)和 cae(计算机 辅助工程)的概念发展而来的。eda 技术是以计算机为工具,根据硬件描述语言 hdl( hardware description language)完成的设计文件,自动地完成逻辑编译、化简、分割、 综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型 的 eda 工具中必须包含两个特殊的软件包,即综合器和适配
6、器。综合器的功能就是将设计 者在 eda 平台上完成的针对某个系统项目的 hdl、原理图或状态图形描述,针对给定的硬 件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。 4 三、课程设计环境三、课程设计环境 本次课题设计方要用到的开发环境是 altera 公司的 eda 设计工具软件 quartusii 4.0。 quartus ii 是 altera 公司的综合性 pld 开发软件,支持原理图、vhdl、veriloghdl 以及 ahdl(altera hardware description language)等多种设计输入形式,内嵌自有的综合 器以及仿真器,可以
7、完成从设计输入到硬件配置的完整 pld 设计流程。 quartus ii 可以在 xp、linux 以及 unix 上使用,除了可以使用 tcl 脚本完成设计流 程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易 学易用等特点。 多功能电子琴系统的设计多功能电子琴系统的设计 一、设计目的一、设计目的 1.熟练掌握 quartusii 软件的使用方法和系统总体设计。 2.学会设计较复杂的数字系统,用 verilog hdl 描述语言编写设计代码,并综合仿真验证 设计,用 fpga 试验箱验证设计。 3.学习 fpga 试验箱的使用,各种电路图的引脚接法及其功能。 4.
8、本实验要求学生以 fpga 器件为目标器件,设计典型的数字系统。本设计选题为电子琴系 统设计 二、设计要求二、设计要求 (1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。 (2)演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存入的乐曲。 三、方案设计三、方案设计 根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图 如图示,它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。 5 四、系统软件设计四、系统软件设计 1、音调发生模块、音调发生模块、分频模块、分频模块 音调发生模块的作用是产生音阶的分频预置值。当 8 位发声控制输入信号中的某一位 为
9、高电平时,则对应某一音节的数值将输出,该数值即为该音阶的分频预置值,分频预置 值控制数控分频模块进行分频,由此可得到每个音阶对应的频率。数控分频模块是对时基 脉冲进行分频,得到与七个音符相对应的频率 五、软件仿真调试五、软件仿真调试 (1)乐曲自动演奏模块的仿真如图 5-1: (4)简易电子琴整个系统的仿真如图 5-2: 图 5-2 简易电子琴整个系统的仿真图 六、设计总结六、设计总结 经过努力,简易电子琴的设计基本上完成了。在整个设计过程中,我理论与实践相结合, 感觉受益匪浅 6 1) 这个设计的基本是接触一门新的语言并加以应用, verilog hdl 的编程与 c 语言 的编程比较相似,
10、各个学科不同的知识点还是有类似之处的。 3) verilog hdl 的设计关键是电路逻辑设计,而一个程序的关键是总体设计。对于硬 件设计接触不多是警醒是,在熟悉硬件电路的基础上进行软件设计才是正确的方向。 4)通过这个程序设计让我学会一种新的语言,对数字系统结构也有了更进一步的了解 和认识,通过几天的课程设计,我对数据库软件 eda 技术、verilog hdl、等系列知识都有 了一定的了解。 参考文献参考文献 vhdl 语言 100 例详解北京理工大学 asic 研究所.北京理工大学 asic 研究所. 清 华大学出版社 vhdl 程序设计(第二版). 曾繁泰等. 清华大学出版社 vhdl
11、 入门与应用陈雪松, 滕立中 .人民邮电出版社 vhdl 简明教程.王小军 .清华大学出版社 十字路口交通灯控制系统设计十字路口交通灯控制系统设计 一、设计目的和要求一、设计目的和要求 1.熟练掌握 quartusii 软件的使用方法和系统总体设计。 2.学会设计较复杂的数字系统,用 verilog hdl 描述语言编写设计代码,并综合仿真验证 设计,用 fpga 试验箱验证设计。 3.学习 fpga 试验箱的使用,各种电路图的引脚接法及其功能。 二、系统方案设计二、系统方案设计 2.1 设计思路设计思路 为了便于讨论,我们只讨论路口1(用a表示)和路口4(用b表示) 。此交通灯控制系统 一共
12、设计有5种工作模式。分别为:方式1 :a 向绿灯长亮,b 向红灯亮。方式2 :a 向左转 7 灯长亮,b 向红灯亮。方式3 :b 向绿灯长亮,a 向红灯亮。方式4 :b 向左转灯长亮,a 向红 灯亮。方式5 :自动工作方式,两个方向的灯按照显示的顺序,交替循环显示。系统设有总复 位开关,可在任意时间内对系统进行复位。 对系统工作的状态进行控制(见表1)。 2.2 系统设计框图系统设计框图 系统采用的时钟频率为 10khz,经分频为 1hz 后送入控制计时电路,同时送入控制 计时电路的还有控制信号 m2m1m0 以及复位信号 rst,控制交通灯的运行状态。经处理 后输出 led 灯以及数码管显示
13、电路的控制信号,从而完成整个电路的控制与实现。 时钟clk10k 分频clk1 复位rstm2 m1 m0 复位rst 控制 计时 电路 分 频 电 路 al ar ay ag bl br by bg b 组 信 号 灯 a 组 信 号 灯 数码管显示电路 8 复位 rst 时钟 clk10k 图 1 系统设计示意图 三、交通信号控制器具体模块设计三、交通信号控制器具体模块设计 3.1 时钟分频模块设计时钟分频模块设计 系统的时钟输入为 10khz 的脉冲,而系统时钟计时模块需要 1hz 的脉冲。分频模块主要 为系统提供所需的时钟计时脉冲。该模块将 10khz 的脉冲信号进行分频,产生 1s
14、的方波 (占空比为 50%),作为系统时钟计时信号。计时模块用来设定路口计时器的初值,并为 扫描显示译码模块提供倒计时时间。 表 3 i/o 管脚描述(一) 名称方向位宽功能 clk10kinput1 系统时钟(10khz) rstinput1 复位信号(高电平有效) clk1output1 分频后时钟信号(1hz) 3.2 控制模块设计控制模块设计 控制模块根据外部输入信号,产生系统的状态机,控制其他部分协调工作。控制模块 采用状态机进行设计,可定义出 5 种工作方式。当进入自动工作方式时,一共有 8 种状态。 表 4 i/o 管脚描述(二) 名称方向位宽功能 clk1input1 分频后时
15、钟信号(1hz) 9 m2input1 工作方式选择 m1input1 工作方式选择 m0input 1 工作方式选择 rstinput1 复位信号(高电平有效) s_nsoutput4 南北数码管十位显示 m_nsoutput4 南北数码管个位显示 s_weoutput4 东西数码管十位显示 m_weoutput4 东西数码管个位显示 ledoutput8 led 灯 三、交通信号控制器功能软件设计仿真与测试三、交通信号控制器功能软件设计仿真与测试 1、仿真及测试、仿真及测试 利用 quartus仿真测试,结果显示,当 rst=1 时,此时状态 led 显示为 00100100,意 思是 a
16、 向绿灯亮,b 向红灯亮数码管输出均为 39(图 5) 。 图 2 quartus仿真结果示意图(一) 当 m2m1m0 处于 000 时,时间输出为 0,led 灯显示为 a 向绿灯,b 向红灯。当 m2m1m0 处于 001 时,时间输出为 0,led 灯显示为 a 向左转,b 向红灯。当 m2m1m0 处于 010 时, 时间输出为 0,led 灯显示为 a 向红灯,b 向绿灯。当 m2m1m0 处于 011 时,时间输出为 10 0,led 灯显示为 a 向红灯,b 向左转(图 6) 。 图 3 quartus仿真结果示意图(二) 当 m2 等于 1 时,控制系统进入自动控制状态,数码
17、管倒计时正常,led 灯进入循环状 态(图 7) 。 图 4 quartus仿真结果示意图(三) 五、设计总结五、设计总结 经过此次课程设计,学到了很多知识,概括总结为以下几点: 1、熟悉掌握了 quartus 这个软件。虽然上课时候已经看老师展示过这个软件的用法, 但是没有亲力亲为始终对这个软件的掌握是很不够的。从认识到实践,是一个比较不同的 过程,先要对应具体的电路,才能进行正确的设计。 2、通过以上两个方案的设计,我对规范的设计流程已经有了深刻的体会,有了经验教 训以后再面对这样的问题不会再走弯路。 3、通过设计代码过程中遇到编译错误的问题,经过一次次的排错,我对 verilog hdl
18、 11 描述语言的掌握得到一定的锻炼。 参考文献参考文献 1 王正勇.基于 fpga 的交通信号控制器的设计 电子测量技术第 31 卷第 10 期 2008 .10 2 蓝运维.基于 fpga 的交通灯控制系统的仿真 现代电子技术2006 年第 9 期总第 224 期 3 周兴华.手把手教你学单片机m.北京:北京航空航天大学出版社,2005. 4褚振勇,翁木云.fpga 设计及应用m.西安:西安电子科技大学出版社,2002 六、附录程序:六、附录程序: 交交通通灯灯控控制制系系统统 module traffic(clock,reset,red1,yellow1,green1,red2,yell
19、ow2,green2,count,count1); output red1,yellow1,green1; /东西方向灯 output red2,yellow2,green2; /南北方向灯 output 7:0count; output 7:0count1; input clock,reset; reg red1,yellow1,green1; reg red2,yellow2,green2; reg 1:0 state; reg 7:0 count; 12 reg 7:0 count1; /时间计数 parameter st0=2b00, st1=2b01, st2=2b10, st3=2
20、b11; always (posedge clock or posedge reset) begin if(reset) begin state=st0; /东西方向红灯亮,南北方向绿灯亮,延时20 个时钟 count=8b00100000; count1=8b00100000; red1=1b1; yellow1=1b0; green1=1b0; red2=1b0; yellow2=1b0; green2=1b1; end else begin if(count3:0=4b0000) begin count3:0=4b1001; count7:4=count7:4-1; count13:0=
21、4b1001; 13 count17:4=count17:4-1; end else begin count3:0=count3:0-1; count13:0=count13:0-1; end case(state) st0: begin if(count=0) begin state=st1; /东西方向黄灯亮,南北方向黄 灯亮,延时5个时钟 count=5; count1=5; red1=1b0; yellow1=1b1; green1=1b0; red2=1b0; yellow2=1b1; green2=1b0; end else state=st0; end st1: begin 14
22、 if(count=0) begin state=st2; /东西方向绿灯亮,南北方向红灯 亮,延时20个时钟 count=8b00100000; count1=8b00100000; red1=1b0; yellow1=1b0; green1=1b1; red2=1b1; yellow2=1b0; green2=1b0; end else state=st1; end st2: begin if(count=0) begin state=st3; /东西方向黄灯亮,南北方向黄 灯亮,延时5个时钟 count=5; count1=5; red1=1b0; yellow1=1b1; green1
23、=1b0; red2=1b0; yellow2=1b1; green2=1b0; 15 end else state=st2; end st3: begin if(count=0) begin state=st0; count=8b00100000; count1=8b00100000; red1=1b1; yellow1=1b0; green1=1b0; red2=1b0; yellow2=1b0; green2=1b1; end else state=st3; end default: begin state=st0; /东西方向红灯亮,南北方向绿灯亮,延时 20个时钟 count=8b0
24、0100000; count1=8b00100000; red1=1b1; yellow1=1b0; green1=1b0; 16 red2=1b0; yellow2=1b0; green2=1b1; end endcase end end endmodule 电子琴电子琴 附附 录录 - - 程序代码程序代码 module song( inclk ,outclk ,key1 ,key2 ,key3 ,key4 ,key5 ,key6 ,key7 ,key8 ); input inclk; input key1,key2,key3,key4,key5,key6,key7,key8; outpu
25、t outclk; 17 reg outclk; wire out1,out2; digital_piano m1( /调用子调块 .inclk(inclk), .key1(key1), .key2(key2), .key3(key3), .key4(key4), .key5(key5), .key6(key6), .key7(key7), .beep2(out2) ); bell m2(/调用子调块 .sys_clk(inclk), .beep1(out1) ); wire7:0 key; reg mm; assign key = key1,key2,key3,key4,key5,key6,
26、key7,key8; /由按键拼 键为变量key always (posedge inclk) /在时钟的上升沿检测是否有 按键按下 begin if(mm = 1b1) outclk = out1;/输出制定曲谱 else outclk = out2;/电子琴按键发音 end 18 always (posedge inclk) begin if(key = 8b0000_0001)/如果key8按键按下了, 则让mm值取反,切换输出选项 mm = !mm; end endmodule /bell子模块 module bell ( sys_clk,/直接输入系统时钟 beep1/波形输出 );
27、 input sys_clk; /系统时钟50mhz output beep1; /蜂鸣器输出端 reg beep_r; /寄存器 reg 7:0 state; /乐谱状态机 reg 15:0 count; reg 15:0 count_end; reg 23:0 count1; /乐谱参数:d=f/2k parameter l_5 = 16d61224, /低音5 50m/61224/2约等于 392hz l_6 = 16d54545, /低音6 m_1 = 16d45863, /中音1 m_2 = 16d40865, /中音2 19 m_3 = 16d36402, /中音3 m_5 = 1
28、6d30612, /中音5 m_6 = 16d27273, /中音6 h_1 = 16d22956; /高音1 50m/22956/2约等于 1089hz parameter time = 12000000; /控制音的长短(250ms)-频率约 为 50m/12000000 =4hz assign beep1 = beep_r; /连接beep_r的值和beep1。输出 音乐 /* 模块名称:分频器 功能描述:计数分频 */ always (posedge sys_clk) begin count = count + 1b1; /计数器加1 if(count = count_end) /当系
29、统始终的跳动数积累到 count_end(对应发出周 期的一半)时,输出电平取反 begin count = 16h0; /计数器清零 beep_r = !beep_r; /输出取反 end end /* * 模块名称:曲谱 20 * 功能描述:产生分频的系数并描述出曲谱 */ always (posedge sys_clk) begin if(count1 time) /一个节拍250ms count1 = count1 + 1b1; else begin count1 = 24d0; if(state = 8d147) state = 8d0; else state = state + 1
30、b1; case(state) /state的值会在0147之间不断地循环-即循环播放音乐 8d0,8d1: count_end = l_5; 8d2,8d3,8d4,8d5,8d6,8d7,8d8: count_end = m_1 ; 8d9,8d10: count_end = m_3; 8d11,8d12,8d13,8d14: count_end = m_2; 8d15: count_end = m_1; 8d16,8d17: count_end = m_2; 8d18,8d19: count_end = m_3; 8d20,8d21,8d22,8d23,8d24: count_end =
31、 m_1; 8d25,8d26: count_end = m_3; 8d27,8d28: count_end = m_5; 8d29,8d30,8d31,8d32,8d33: count_end = m_6; 8d34,8d35,8d36,8d37,8d38: count_end = m_6; 8d39,8d40,8d41,8d42: count_end = m_5; 8d43,8d44,8d45: count_end = m_3; 8d46,8d47: count_end = m_1; 8d48,8d49,8d50,8d51: count_end = m_2; 21 8d52: count_
32、end = m_1; 8d53,8d54: count_end = m_2; 8d55,8d56: count_end = m_3; 8d57,8d58,8d59,8d60: count_end = m_1; 8d61,8d62,8d63: count_end = l_6; 8d64,8d65: count_end = m_5; 8d66,8d67,8d68,8d69: count_end = m_1; 8d70,8d71,8d72,8d73: count_end = m_1; 8d74,8d75: count_end = m_6; 8d76,8d77,8d78,8d79: count_end
33、 = m_5; 8d80,8d81,8d82: count_end = m_3; 8d83,8d84: count_end = m_1; 8d85,8d86,8d87,8d88: count_end = m_2; 8d89: count_end = m_1; 8d90,8d91: count_end = m_2; 8d92,8d93: count_end = m_6; 8d94,8d95,8d96,8d97: count_end = m_5; 8d98,8d99,8d100: count_end = m_3; 8d101,8d102: count_end = m_5; 8d103,8d104,
34、8d105,8d106: count_end = m_6; 8d107,8d108,8d109,8d110: count_end = m_6; 8d111,8d112: count_end = h_1; 8d113,8d114,8d115,8d116: count_end = m_5; 8d117,8d118,8d119: count_end = m_3; 8d120,8d121: count_end = m_1; 8d122,8d123,8d124,8d125: count_end = m_2; 8d126: count_end = m_1; 22 8d127,8d128: count_end = m_2; 8d129,8d130: count_end = m_3; 8d131,8d132,8d133,8d134: count_end = m_1; 8d135,8d136,8d137: count_end = l_6; 8d138,8d139: count_end = m_5; 8d140,8d141,8d142,8d143: count_end =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版停薪留职期间员工权益保护合同范本
- 2025年高新技术产业园区承包经营权永久转让合同
- 2025年度通讯行业人才培养合作合同样本
- 2025年度智能照明灯具系统集成合同范本集
- 2025年度生态农业项目复杂运营适用合同
- 2025版在线教育平台外教直播课程聘用与教学合同
- 2025版危险品道路运输合同规范文本
- 2025版淘宝平台电商虚拟货币交易合同
- 2025版试用员工劳动合同及薪资福利标准
- 2025年车辆抵押借款担保与绿色金融创新合作协议
- 音乐游戏 花巴掌拍拍教学设计-2025-2026学年小学音乐二年级上册人音版(2024 主编:赵季平杜永寿)
- 肿瘤护理学高级进阶2025年测试答案及解析
- 2025年宣城市总工会招聘社会化工会工作者13名笔试参考题库附答案解析
- 2025-2026学年苏科版(2024)初中物理九年级上册教学计划及进度表
- 2025至2030年中国电热毛巾架行业市场发展现状及投资战略咨询报告
- 2025重庆对外建设(集团)有限公司招聘41人笔试模拟试题及答案解析
- 2025年四川省成都市中考数学真题(含答案卷)
- 2025至2030年中国泥炭行业市场深度分析及投资战略咨询报告
- 工会帮扶救助课件
- 2025年新高考全国一卷地理试题及答案解析
- 热压罐安全操作规程
评论
0/150
提交评论