第一篇:2012数字系统设计与VHDL课程大作业(定稿)
数字系统设计与VHDL课程大作业
具体要求
一、总体要求:
1. 本课程为专业必选考查类课程,以大作业加平时成绩的形式给定最终成绩。
2. 每班六个题目,每4-5为一组,自由组合,分工合作。10月26日上课
前请各班上交分组及组长情况表。
3. 所有作业需完成VHDL核心代码的设计,并采用QuartusII进行相关仿
真或平台实现,否则全组不及格。
4. 各小组推选一人于第十周(11月5日和9日)上讲台讲解题目设计思路、源代码分析、仿真结果及演示。
5. 各小组组长于11月30日前到老师处汇报题目的完成情况,并接受考核。
6. 每名同学于11月30日前提交一份大作业报告,并由班长统一送交老师。
二、大作业题目:
1. 频率计设计(平台实现)
1)
2)
3)
4)能对输入的方波信号频率进行采样; 采样频率范围为0~999999Hz,以1Hz为单位进行显示; 采用六个七段数码管显示当前采样的频率值; 本电路系统输入时钟为6MHz。
2. 方波发生器设计(仿真实现)
1)
2)
3)系统的输入时钟为6MHz; 系统输出频率为对系统时钟的1~32分频;(5位二进制输入); 系统输出频率的占空比可调,分为25%、50%、75%三档;(采用2位二进制
位输入控制)。
3. 竞赛抢答器设计(平台实现)
1)
2)抢答器的输入路数为8路;(8位二进制输入)当主持人宣布开始(按下某一键时为有效),抢答时当某一方先按下按键,其
他键则失效;
3)
4)
5)用1个七段数码管显示抢中的路编号; 系统复位键按下后,进行下一轮抢答; 系统的输入时钟为6MHz。
4. 交通灯控制系统设计(平台实现)
1)交叉路口为十字路口;
2)
3)每路口设直行、左转、右转的方向指示灯; 每个方向指示灯有三种颜色,即红、绿、黄三色。为简化设计,右转指示灯常
绿;黄灯闪动时间间隔为0。5S,持续时间自定义。
4)
5)每路口需用两个数码管显示允许通行或禁止通行的时间; 系统的输入时钟为6MHz。
5. 点阵字符显示控制器设计(仿真实现)
1)
2)
3)用16*16点阵的发光二极管显示字符; 可显示字符为0~9的数字字符与A~F英文字母; 输入为四位二进制矢量。
6. 万年历及电子钟设计(平台实现)
1)
2)
3)
4)能显示年、月、日、时、分、秒、星期,共需15个数码管; 年、月、日、时、分、星期均需可调; 系统默认时间为2000年01月01日00时00分00秒星期6; 系统输入时钟为6MHz。
三、大作业报告要求:
1. 题目功能分析;
2. 总体模块划分;
3. 代码实现;
4. 仿真结果;
5. 设计心得、体会;
6. 报告采用统一的A4封面,其中1、2、5项必须为手写,3、4项为打印。
7. 网络工程专业不再进行期末考试,期终成绩以作业测试、讲解、报告综
合评定,计算机专业还需要进行闭卷考试,但作业测试、讲解、报告占主要部分。
第二篇:数字逻辑与数字系统设计教学大纲
西安电子科技大学
“卓越工程师教育培养计划”试点课程教学大纲
“数字逻辑与数字系统设计”教学大纲
课程编号:OE2121017 课程名称:数字逻辑与数字系统设计
英文名称: Digital Logic and Digital
System Design 学
时:60
学
分:4 课程类型:必修
课程性质:专业基础课 适用专业:电子信息与通信工程(大类)
开课学期:4 先修课程:高等数学、大学物理、电路分析与模拟电子线路 开课院系:电工电子教学基地及相关学院
一、课程的教学任务与目标
数字逻辑与数字系统设计是重要的学科基础课。该课程与配套的“数字逻辑与数字系统设计实验”课程紧密结合,以问题驱动、案例教学、强化实践和能力培养为导向,通过课程讲授、单元实验、综合设计项目大作业、设计报告撰写、研讨讲评等环节,实现知识能力矩阵中1.1.2.2、1.2.1.2以及2.5、2.6、3.6、4.1、4.2的能力要求。
要求学生掌握数字电路的基本概念、基本原理和基本方法,了解电子设计自动化(EDA:Electronic Design Automation)技术和工具。数字电路部分要求学生掌握数制及编码、逻辑代数及逻辑函数的知识;掌握组合逻辑电路的分析与设计方法,熟悉常用的中规模组合逻辑部件的功能及其应用;掌握同步时序逻辑电路的分析和设计方法,典型的中大规模时序逻辑部件。EDA设计技术部分,需要了解现代数字系统设计的方法与过程,学习硬件描述语言,了解高密度可编程逻辑器件的基本原理及开发过程,掌握EDA设计工具,培养学生设计较大规模的数字电路系统的能力。
本课程教学特点和主要目的:
(1)本课程概念性、实践性、工程性都很强,教学中应特别注重理论联系实际和工程应用背景。
(2)使学生掌握经典的数字逻辑电路的基本概念和设计方法;(3)掌握当今EDA工具设计数字电路的方法。
(4)本课将硬件描述语言(HDL)融合到各章中,并在软件平台上进行随堂仿真, 通西安电子科技大学
“卓越工程师教育培养计划”试点课程教学大纲
过本课和实验教学, 使学生掌握新的数字系统设计技术.虽然现代设计人员已经很少使用传统的设计技术,但传统的设计可以让学生直观地了解数字电路是如何工作的,并可以为EDA设计工具所进行的操作提供说明,让学生进一步了解自动化设计技术的优点。
成功的逻辑电路设计人员必须深入理解数字逻辑设计相关的基本概念,并熟练掌握EDA设计工具的使用。
二、本课程与其它课程的联系和分工
数字逻辑与数字系统设计主要讨论集成电路器件的外部特性,对门电路内部晶体管的工作原理及状态转换只作定性了解。
数字逻辑与数字系统设计在学科基础中的地位既要体现作为一门课程的完整性和电子线路体系结构的特点,也要体现为后续课程服务的目的。后续的专业课程如计算机组成原理,微机原理、接口技术等都是数字电路系统高度集成的体现。数字电路与系统设计为微处理器与系统设计、嵌入式系统、数字通信等后续课程进行了基础知识准备。
三、课程内容及基本要求
(一)数制与编码(建议3学时)学习数制表示方法和常用编码 1.基本要求
(1)掌握常用数制(2、8、10、16进制数)的表示方法与相互转换方法
(2)掌握常用编码(842BCD码、5421BCD码、余3码、格雷码等)的表示方法 2.重点、难点
重点:二进制,十六进制 难点:格雷码的掌握
3.说明:主要掌握常用编码的表示方法
(二)逻辑代数与逻辑函数化简(建议10学时)
学习逻辑代数的基本运算及函数表示方式,了解逻辑函数的化简方法;学习硬件描述语言(HDL)描述逻辑函数的基本结构,熟悉逻辑函数与HDL之间的对应关系。1.基本要求
(1)熟练掌握基本逻辑运算与逻辑门
(2)了解逻辑代数的基本定理、法则和主要公式,了解逻辑函数代数化简法(3)掌握逻辑函数的标准表达式和常用的五种表达式及相互转换方法(4)能够用HDL描述真值表,熟悉逻辑函数的HDL表达方式(5)熟悉逻辑函数的卡诺图化简法
(6)掌握包含无关项逻辑函数的表示方法及化简方法 2.重点、难点
重点:逻辑函数的两种标准表示形式以及HDL表达方式 难点:五种表达式之间的相互转化 西安电子科技大学
“卓越工程师教育培养计划”试点课程教学大纲
3.说明:5个变量以上的逻辑函数化简不作要求
(三)组合逻辑电路(建议10学时)
学习组合逻辑电路的分析方法和设计方法,学习组合逻辑的HDL描述方式 1.基本要求
(1)掌握组合电路的分析方法和设计方法
(2)熟悉组合逻辑电路的HDL设计方法,掌握设计流程图的绘制方法
(3)熟悉常用MSI组合逻辑部件(变量译码器、数据选择器)的逻辑功能,扩展方法及应用
(4)掌握译码器、数据选择器的HDL描述方式
(5)掌握由MSI器件构成组合电路的设计方法和分析方法(6)了解组合电路的竞争冒险现象及消除方法 2.重点、难点
重点:由门电路进行组合电路的设计 难点:中规模集成电路芯片应用
3.说明: 安排组合逻辑研究实验
(四)触发器(建议6学时)
学习触发器的工作原理和功能描述方法,学习触发器的HDL描述方法 1.基本要求
(1)掌握基本RS触发器及常用沿触发的(D、T、JK)触发器的逻辑功能及其描述方法(2)触发器的HDL描述方法(包括行为级描述和结构化描述)(3)熟悉常用集成触发器的逻辑符号及时序图的画法(4)掌握触发器的HDL描述方法中的沿触发与电平触发 2.重点、难点
重点: 触发器的多种描述方法
难点:触发器电路的HDL描述及时序波形
3.说明:触发器部分要求记忆逻辑符号掌握逻辑功能,对触发器内部电路不做要求,安排集成触发器实验。
(五)时序逻辑电路(建议16学时)
学习同步时序电路的分析方法和典型同步时序电路的设计方法,时序电路的HDL描述。1.基本要求
(1)掌握同步时序电路的分析方法,要求根据电路能正确列出状态表,画出状态及时序图并分析其功能
(2)了解同步时序电路的一般设计方法和步骤,掌握给定状态同步时序电路的设计方法
(3)掌握时序电路的HDL描述方法 西安电子科技大学
“卓越工程师教育培养计划”试点课程教学大纲
(4)掌握典型MSI时序逻辑部件(74LS161、74LS194)的逻辑功能,扩展方法及应用(5)学习状态机的HDL描述方法,并掌握复杂时序逻辑电路的HDL描述方法(6)掌握以MSI为主的典型同步时序电路的分析方法与设计方法:
任意模值计数器;移位型计数器;序列码发生器(7)掌握典型时序电路的HDL描述方法
(8)了解异步时序电路的主要特点
2.重点、难点
重点:电路自启动自校正的设计;MSI时序逻辑部件的逻辑功能及应用 难点:时序逻辑点状态机HDL描述
3.说明:学习这一章后,要求能看懂器件手册,安排计数器和移位寄存器应用实验。
(六)集成逻辑门(建议3学时)1.基本要求
(1)了解典型TTL与非门的基本工作原理,掌握其主要外特性和参数(2)掌握集电极开路门和三态门的主要特点
(3)掌握MOS逻辑门(以CMOS为主)的主要特点和使用方法 2.重点、难点
重点:TTL与非门的主要外特性和参数 难点:集电极开路门
(七)脉冲波形的产生与整形(建议3学时)了解脉冲电路的分析方法 1.基本要求
(1)了解典型脉冲电路(单稳、多谐、施密特触发器)的基本特点及脉冲电路的分析方法
(2)掌握555定时器的基本工作原理及典型应用
(3)掌握晶体振荡器,施密特单稳集成电路的基本原理及使用方法。2.重点、难点 重点: 555定时器
难点:振荡电路性能提高需要考虑的因素 3.说明:安排脉冲电路的产生和整形实验。
(八)存贮器及可编程器件(建议4学时)1.基本要求
(1)掌握ROM的基本工作原理和几种不同的编程方法(2)了解静态RAM和动态RAM的基本工作原理
(3)了解可编程器件的内部结构特点, 可用资源, 主要参数和选型依据 西安电子科技大学
“卓越工程师教育培养计划”试点课程教学大纲
(4)结合实验, 逐步掌握FPGA的仿真与设计技术 2.重点、难点
重点:ROM的基本工作原理, FPGA的仿真与设计技术 难点:ROM实现组成逻辑函数, FPGA的仿真与设计技术
(九)D/A和A/D(建议1学时)1.基本要求
(1)了解D/A和A/D转换器的基本原理和主要技术指标(2)了解典型集成D/A和A/D芯片的特点 2.重点、难点
重点:D/A和A/D转换器的主要技术指标 难点:D/A和A/D转换器的基本原理
四、布置大作业
综合设计(1)-----用VHDL设计一数字频率计(结合实验在FPGA上实现)综合设计(2)-----用VHDL设计一DDS信号发生器(结合实验在FPGA上实现)系统设计完成通过EDA软件仿真后,在FPGA系统上实现验证,期间安排两次讨论。第一次是设计方案评审和讲评,第二次的实现结果报告和讲评。
五、教学安排及方式
总学时 60 学时,讲课 56 学时。讨论4学时。实验单独开课,大作业采用开放式实验方式利用课外时间进行。
六、考核方式
1.期末笔试(以闭卷考试为主,也可开卷考试或半开卷半闭卷考试)占60% , 2.大作业----综合设计占30%, 3.平时成绩占10%.七、推荐教材与参考资料
教材:
(1)新编: 任爱锋, 孙万蓉, 周端等
(2)杨颂华等 数字电子技术基础 西安 西安电子科技大学出版社 2009 参考书:
(1)夏宇闻等译 数字逻辑基础与Verilog设计 机械工业出版社
(2)John F.Wakerly 数字设计——原理与实践(第三版 影印版)高等教育出版社
西安电子科技大学
“卓越工程师教育培养计划”试点课程教学大纲
第三篇:《数字逻辑与数字系统》课程实践教学经验总结
数字逻辑与数字系统资源库
《数字逻辑与数字系统》课程实践教学
经验总结
北京邮电大学计算机学院实验中心 杨秦 张杰 靳秀国
“数字逻辑与数字系统”课程是计算机、通信、电子、信息、自动控制等专业的技术基础课程,又是一门实践性很强的课程。对计算机专业的学生来说,它是硬件知识的基础课,一辈子受用。“数字逻辑与数字系统”课程教学实验不仅对学好本门课,而且对 “计算机组成原理”等后续课的理论教学和实践教学具有十分重要的意义。因为它是能力培养的基础性工作,理论教学无法取代。为了配合精品课程建设,我们对教学实验包括实验系统、教学内容及实验教学手段都进行了改革,也取得了一些经验。本文从课程实验和课程设计两个方面
进行总结。
课程实验部分
1.从教材、实验系统到教学实验内容的改革
由于新技术的发展,“数字逻辑与数字系统”教材也在变革,我们选择了清华大学科教仪器厂的TDS-2实验系统(见图一)。在这个实验设备上,既能使用中小规模标准器件作基础数字实验,又可使用可编程逻辑器件完成复杂的数字系统实验。在我们新购置的100台综合实验平台TEC-5(见图一)中,仍保持了基础性实验和时代性实验两方面的教学内容,为数字实验提供了高端的ISP芯片,使教学实验的内容和重点得以向在系统编程逻辑方面倾斜。
图 一
基础性实验的设计非常重要,它使学生掌握基本概念,具备基础知识和能力
结构。基本逻辑门和三态门实验:在掌握“TDS数字电路实验系统”仪器和示波器测量的使用方法的基础上,掌握TTL与非门、与或非门和异或门输入与输出之间的逻辑关系;三态门逻辑功能和使用方法,熟悉TTL中、小规模集成电路的外形、管脚和使用方法;掌握用三态门构成总线的特点和方法。基本逻辑门实验,选择了典型的芯片,让学生从芯片的外观、封装到逻辑关系的验证来熟悉数字芯片;在接下来的三态门实验中,逻辑的验证就不是重点了,我们引导学生测量高阻输出受钳制的情况,让他们在实验中感性的体会三态的意义。
数据选择器和译码器实验:熟悉数据选择器和译码器的逻辑功能。这种组合逻辑的实验,我们更加强调应用而不是简单验证。时序逻辑的实验也是一样,有时候一次实验做出多少个计数器并不重要,我们更加看重的是会不会分析设计电路,能不能记录和分析时序图。触发器实验:掌握RS触发器、D触发器、JK触发器的工作原理,学会正确使用RS触发器、D触发器、JK触发器。
简单时序电路:掌握简单时序电路的分析、设计、测试方法。计数器实验:掌握计数器74LS162的功能,计数器的级连方法,熟悉任意模计数器的构成方法,熟悉数码管的使用。在计数器和时序电路实验中,我们还穿插了Workbench仿真试验,并且指导学生用仿真软件指导设计和完成测试。我们在时代性实验中,在系统编程ISP技术的实验内容:用两个时间单元完成AHDL实现三八译码器、十进制计数器和七段译码器实验,芯片选用ISP1032,软件平台用isp EXPER,鼓励学生采用多种方案实现。
2.实验教学方式的改革和实践效果 在实验教学中,我们抛弃了过去的粉笔黑板灌输式的教学方式,尝试了多种
手段结合的互动式教学模式。首先,我们在总结大家教学经验的基础上统一了实验PPT教案(如图二所示),采用了PPT投影为主和老师即兴板书为辅的授课形式,一改过去落后的教学方式,图形界面美观并且讲解更为方便,也收到良好的教学效果。
图 二
然后,我们指导做毕业设计的学生完成实验课件的Flash动画设计(如图三所示),连同PPT教案放到FTP服务器上提供学生下载,学生在实验课前就可以完成对实验系统和实验内容的预习,并且对实验的流程有一个直观的了解。
图 三
在实验指导上,我们也做了很多尝试。在学生做数字逻辑实验的第一天起,就告诉他们实验不是简单对理论的验证,而是以培养数字系统硬件工程师的标准去要求,除了知识的学习,实验更看中的是能力的培养。首先,对实验系统的所有调试工具:示波器、逻辑笔等必须熟练掌握;每一次实验前要求下载相关芯片手册,对芯片每一个功能引脚都要求了解;在时序逻辑实验中,要求绘制并分析时序图;能使用防真软件辅助小型综合电路的设计;在系统可编程系统实验中,鼓励以不同方案完成设计。在验收和给成绩的时候,我们看的不仅仅是实验内容的正确完成,更多考虑的是工具是否熟练使用、设计方案是否灵活多样等等个人能力。
对于实验中遇到的问题,教师可结合自身教学和科研经验,尽量给出详尽并且特别的解答,比如在三态门实验中,学生对高阻态和总线方式提出疑问时,除了讲解概念之外,还给他们举了一个科研中的实例:在我们做CDMA基站测试系统硬件设计时,由于译码和读写信号设计错误,CPU访问存储单元数据总线严重冲突造成死机。在讲解时序芯片由于工艺限制导致信号延时的时候,用一次科研实例:一个特别信号需要延时几纳秒而系统时钟只有4兆赫兹,设计人员利用EPLD芯片自身延时将信号进出芯片两次,巧妙的解决了问题,让学生在硬件实验中学会逆向思维去解决问题。
多样化的教学手段的应用以及更新更特别的教学方式,让学生在数字逻辑实验中不仅锻炼了能力,更重要的是找到了学习的乐趣。在实验结束后,很多同学不愿离开实验室,而是热烈地讨论和试验更多不同方案,我们赞同这种脑力激荡的方式,毕竟求知的乐趣和热情是非常难能可贵的,这也是我们实验教学的目标。
3.一个典型的实验范例
我们加大了在系统编程ISP系统实验的数量,让学生用AHDL语言实现三八译码器、十进制计数器和七段译码器,在实验中鼓励他们设计不同的方案,比较分析不同方案的优缺点,也给他们讲解一些设计的技巧。比如使用中间变量逻辑结构,能够简化逻辑表达式,从而减少适配器的工作量和运行时间,增加适配成功率同时减少芯片资源占用率。在实验中,学生的完成情况给我们以很大的惊喜。下面以最后一次ISP实验为例。
实验要求:学生独立设计一位十进制计数器七段数字显示系统,如图四所示。计数器是8421BCD码同步计数器,其输出Q3—Q0作为七段译码器的输入,译码器的输出送到七段发光二极管显示器,它能显示0,2,„„9十个字符。采用ABEL-HDL语言设计并写出完整的设计源程序,并在实验台的数码管上进行演示。
图 四
这个实验非常典型,既有时序逻辑,又有组合逻辑。不少学生在实验中作出了创新尝试,采用了多种方案:涉及逻辑方程法、真值表法、状态图法。由于设计中包含了计数器和译码器两个模块,各种方法又有不同的设计方案,很多同学一个人就做了多种方案,表现了很高的兴趣和设计热情。下面选取了有特点的5种方案:方案一至方案三中的十进制计数器设计方法大致相同,而译码器设计采用了逻辑方程和真值表法,而方案二和三又用了真值表的不同表达方式;方案四和五同是状态图法,表达方式也不相同。充分表现了ABEL-HDL语言设计数字逻辑电路的灵活性和多样性。方案一
MODULE count1 TITLE 'count1' DECLARATIONS
clock,clear PIN;q3,q2,q1,q0 NODE ISTYPE 'reg';ya,yb,yc,yd,ye,yf,yg PIN ISTYPE 'com';count=[q3..q0];EQUATIONS
count.clk=clock;count.clr=clear;
count:=(count+1)&!(count==9);
yg=!(count==0)&!(count==1)&!(count==7);
yf=!(count==1)&!(count==2)&!(count==3)&!(count==7);
ye=!(count==1)&!(count==3)&!(count==4)&!(count==5)&!(count==7)&!(count==9);yd=!(count==1)&!(count==4)&!(count==7)&!(count==9);yc=!(count==2);
yb=!(count==5)&!(count==6);
ya=!(count==1)&!(count==4)&!(count==6);END count1
方案二
方案三 MODULE count2 TITLE 'count2' DECLARATIONS
clock,clear PIN;
q0,q1,q2,q3 NODE ISTYPE 'reg';
a,b,c,d,e,f,g PIN ISTYPE 'com';q=[q3..q0];EQUATIONS q.clk=clock;q:=(q+1)&(q!=9);q.clr=clear;TRUTH_TABLE
(q->[a,b,c,d,e,f,g]);0->[1,1,1,1,1,1,0];1->[0,1,1,0,0,0,0];2->[1,1,0,1,1,0,1];3->[1,1,1,1,0,0,1];4->[0,1,1,0,0,1,1];5->[1,0,1,1,0,1,1];6->[0,0,1,1,1,1,1];7->[1,1,1,0,0,0,0];8->[1,1,1,1,1,1,1];9->[1,1,1,0,0,1,1];
MODULE count3 TITLE 'count3' DECLARATIONS
clock,clear PIN;
q0,q1,q2,q3 NODE ISTYPE 'reg';
a,b,c,d,e,f,g PIN ISTYPE 'com';q=[q3..q0];EQUATIONS q.clk=clock;q:=(q+1)&!(q==9);q.clr=clear;TRUTH_TABLE
([q3..q0]->[a,b,c,d,e,f,g]);[0,0,0,0]->[1,1,1,1,1,1,0];[0,0,0,1]->[0,1,1,0,0,0,0];[0,0,1,0]->[1,1,0,1,1,0,1];[0,0,1,1]->[1,1,1,1,0,0,1];[0,1,0,0]->[0,1,1,0,0,1,1];[0,1,0,1]->[1,0,1,1,0,1,1];[0,1,1,0]->[0,0,1,1,1,1,1];[0,1,1,1]->[1,1,1,0,0,0,0];[1,0,0,0]->[1,1,1,1,1,1,1];[1,0,0,1]->[1,1,1,0,0,1,1];
END count2 方案四
MODULE count4 DECLARATIONS clock PIN;
g, f, e, d, c, b, a PIN;y = [g, f, e, d, c, b, a ];q0,q1,q2,q3 node istype 'reg';count=[q3,q2,q1,q0];
state0 = [0,0,0,0];state1 = [0,0,0,1];state2 = [0,0,1,0];state3 = [0,0,1,1];state4 = [0,1,0,0];state5 = [0,1,0,1];state6 = [0,1,1,0];state7 = [0,1,1,1];state8 = [1,0,0,0];state9 = [1,0,0,1];EQUATIONS
count.CLK = clock;STATE_DIAGRAM [q3,q2,q1,q0 ] STATE state0 :y= ^B0111111;goto state1;STATE state1 :y= ^B0000110;goto state2;STATE state2 :y= ^B1011011;goto state3;
END count3
方案五
MODULE count5 DECLARATIONS clock PIN;
a, b, c, d, e, f, g PIN ISTYPE 'REG';COUNT = [g, f, e, d, c, b, a ];
EQUATIONS
COUNT.CLK = clock;
STATE_DIAGRAM [g, f, e, d, c, b, a ] STATE ^B0000000 : GOTO ^B0111111;STATE ^B0111111 : GOTO ^B0000110;STATE ^B0000110 : GOTO ^B1011011;STATE ^B1011011 : GOTO ^B1001111;STATE ^B1001111 : GOTO ^B1100110;STATE ^B1100110 : GOTO ^B1101101;STATE ^B1101101 : GOTO ^B1111101;STATE ^B1111101 : GOTO ^B0000111;STATE ^B0000111 : GOTO ^B1111111;STATE ^B1111111 : GOTO ^B1101111;STATE ^B1101111 : GOTO ^B0111111;END count5
STATE state3 :y= ^B1001111;goto state4;STATE state4 :y= ^B1100110;goto state5;STATE state5 :y= ^B1101101;goto state6;STATE state6 :y= ^B1111101;goto state7;STATE state7 :y= ^B0000111;goto state8;STATE state8 :y= ^B1111111;goto state9;STATE state9 :y= ^B1101111;goto state0;END count4
课程设计部分
课程设计的目的是学习运用ISP(在系统编程)技术进行设计和调试的基本步骤和方法,熟悉集成开发软件中设计,模拟调试工具的使用,体会ISP技术相对于传统开发技术的优点。通过课程设计的锻炼,培养学生进行科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
课程设计放在暑假中短学期进行,完全是开放性的,实验室全天开放,教师只对学生的设计方案和调试方法提供指导,不限制设计思路。学生3人一组,团队协同工作,在规定的两周时间内,独立完成四个设计课题并调试成功,由指导教师验收。
1.课程设计内容
芯片选用ISP1032E(引脚图见图五),软件平台用isp EXPERT(如图六所
示)。
图 五 图 六
课题一简易电子琴:用ABEL语言设计一个电子琴。使用TDS-2或TEC-5实验台上的8个电平开关做琴键,电平开关输出为高电平时相当于琴键按下,电平开关输出为低电平时相当于琴键松开。电子琴共有C调的8个音:1,2,3,4,5,6,7和I,在TDS数字电路实验台上对设计进行调试,调试时用实验台上的小喇叭作发声装置。
课题二简易频率计:设计一个简易的频率计,用于测量1MHz以下数字脉冲信号的频率。闸门只有1S一档,测量结果在实验台上的6个数码管显示出来,不测信号脉宽,每次对被测信号计数前,计数器应清零。
课题三交通灯实验:以实验台上的4个红色电平指示灯、4个绿色电平指示灯和4个黄色电平指示灯模仿路口的东、西、南、北4个方向的红、绿、黄交通灯。控制这些指示灯,使它们按下列规律亮、灭:
1.初始状态为4个方向的红灯全亮,时间为1秒。
2.东、西方向绿灯亮,南、北方向红灯亮。东、西方向通车。时间为5秒。3.东、西方向黄灯闪烁,南、北方向红灯亮。时间2秒。
4.东、西方向红灯亮,南、北方向绿灯亮。南北方向通车。时间5秒。5.东、西方向红灯亮,南、北方向黄灯闪烁。时间2秒。6.返回2,继续运行。
7.如果发生紧急事件,例如救护车、警车通过,则按下单脉冲按钮,使得东、西、南、北四个方向红灯亮,紧急事件结束后,松开单脉冲按钮,恢复到被打断的状态继续运行。
课题四电子钟:设计实现一个电子钟。电子钟具有以下功能: 1.实验台上的6个数码管显示时、分、秒。2.能使电子钟复位(清零)。3.能启动或者停止电子钟运行。
4.在电子钟停止运行状态下,能够修改时、分、秒的值。5.具有报时功能,整点时喇叭鸣叫。
要求整个设计分为若干模块,顶层模块用原理图设计,低层模块用ABEL语言设计。在TDS-2或TEC-5实验台上调试设计。
2.完成情况分析
从2001-2005共五届学生的课程设计情况来看,多数小组两周时间能够完成,其中优秀的小组一周多的时间就能全部调试验收完成。四个设计课题涵盖了计数、分频、状态转移多种典型的内容,尤其最后一个电子钟的实验,要求学生用原理图和ABEL语言用两层结构,锻炼了综合设计的能力。学生在整个课程设计期间会出现很多错误:器件型号选错、各种语法错误、设计疏漏引起的竞争和冒险等等,大家团队合作解决问题的过程是非常有趣的经历。学生在调试日志中写道:
* 出现问题:在“停止-调表”状态和计时状态转换时,数码管显示的数出现无规律地跳变,而且跳变时有时无。……原来在处理“停止-调表”状态和计时状态时存在竞争冒险,也就是这条语句:
SF.clk=(!V&!stop)#(!aset1&stop)……
终于找到根源所在!解决问题立即出台!……从根本上解决了问题!
……把分钟、小时钟的模块采取同样的措施后,我们的电子钟近乎完美!
* 实验过程使我们对ABEL的应用有了更深入的认识,实验的同时也增进了我们对ISPexpert软件的熟悉程度。实验的过程就是解决每一个问题的过程,每一个问题的解决,都让我们对基本概念有了更为深入地理解。
课程设计的整个过程进一步巩固和加深了《数字逻辑与数字系统》基本理论、概念的理解,提高了学生的动手能力和数字系统综合设计能力,取得了非常好的实验教学效果。但也发现了一些学生有拷贝现象,为此我们采取了相应的措施,如改换题目进行重做并严格打分;期末考试中加入了实验部分的内容。
结语
在整个《数字逻辑与数字系统》课程的实验教学工作中,我们不仅注重实验设备、教材的更新,更注重实验内容、教学方式的改革,将先进的手段和观念引入教学。通过实验,使学生巩固加深数字逻辑与数字系统的理论知识,通过实践进一步加强学生独立分析问题和解决问题的能力、综合设计及创新能力的培养,同时注意培养学生实事求是、严肃认真的科学作风和良好的实验习惯,为今后科学研究工作打下良好的基础。
第四篇:《系统设计与UML》课程教学大纲
课程名称:系统分析与UML,System Analysis and UML 课程学科类别:工学 电气信息类 学时与学分:48/3 先修课程:软件工程,面向对象程序设计 课程教学目标:
1. 使学生了解面向对象的软件分析与设计过程,掌握UML的语言、表示法及其应用。2. 熟练掌握支持UML的CASE软件开发工具Rational Rose。
3. 能够应用UML和Rational Rose对面向对象的软件系统进行分析和设计。适用学科专业:计算机软件、软件工程、计算机科学与技术 教学手段与方法:面授 基本教学内容与学时安排:
软件工程与面向对象建摸(4学时)
软件开发方法概述 面向对象的系统分析与设计 面向对象建模 UML概览(2学时)
UML的形成历史 UML的结构、符号与图形 UML建模简单流程
Rational Rose工具(3学时)
Rational Rose的架构 Rational Rose的安装和使用 Use Case图(3学时)
用例图的概念 用例图建模技术 类图与对象图(3学时)
类图的概念 类图建模技术 对象图 对象图建模技术 包图(2学时)
包的概念 包之间的关系
状态图(3学时)
状态机 状态图
状态、事件、转换 状态图建模技术 活动图(3学时)
活动图的组成元素 活动的分解 活动图建模技术 时序图(3学时)
时序图的组成 对象的创建和撤销 时序图建模技术 协作图(3学时)
对象、链和消息 时序图与协作图的比较 时序图与协作图的互换 协作图建模技术 组件图(2学时)
接口、依赖关系 组件图建模技术 配置图(1学时)
节点、关联关系 配置图建模技术
UML的扩展机制(3学时)
UML的体系结构 构造型、标记值、约束
用于业务建模的UML扩展 Rose的双向工程(2学时)
双向工程介绍 逆向工程
UML与统一开发过程(3学时)软件开发过程
第五篇:VHDL数字电路设计教程第六章习题答案
P6.1 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity chp6_1 is port(clk:in std_logic;
d_out:out std_logic_vector(5 downto 0));end;architecture bhv of chp6_1 is
signal count: std_logic_vector(5 downto 0);
signal temp: std_logic_vector(5 downto 0);begin
process(clk)
begin
if clk'event and clk='1' then
count<= count+1;
if count=“100000” then count<=“000000”;
end if;
end if;
end process;process(clk)
begin
if clk'event and clk='0' then
temp<=temp+1;
if temp=“0111111” then temp<=“000000”;
end if;end if;end process;
d_out<=count+temp;end;P6.3
solution1 library ieee;use ieee.std_logic_1164.all;entity chp6_3 is port(x:in std_Logic_vector(7 downto 1);
y:out std_logic_vector(2 downto 0));end;architecture bhv of chp6_3 is begin
process(x)
begin
if x(7)='1' then y<=“111”;
elsif x(6)='1' then y<=“110”;
elsif x(5)='1' then y<=“101”;
elsif x(4)='1' then y<=“100”;
elsif x(3)='1' then y<=“011”;
elsif x(2)='1' then y<=“010”;
elsif x(1)='1' then y<=“001”;
else y<=“000”;
end if;
end process;end;solution2 library ieee;use ieee.std_logic_1164.all;entity chp6_3_2 is generic(n:integer:=3);port(x:in std_logic_vector(2**n-1 downto 0);
y:out integer range 0 to 2**n-1);end;architecture bhv of chp6_3_2 is begin
process(x)
variable temp:integer range 0 to 2**n-1;
begin
for i in x'range loop
if x(i)='1' then
temp:=i;
exit;
end if;
end loop;
y<=temp;end process;end;P6.4
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity chp6_4 is generic(n:integer:=8);port(clk:in std_logic;
clk_out:out std_logic);end;architecture bhv of chp6_4 is signal rst:std_logic;signal temp:std_logic_vector(2 downto 0);begin process(clk,rst)begin
if rst='1' then
temp<=“000”;
elsif clk'event and clk='1' then
temp<=temp+1;
end if;end process;
rst<='1' when temp=“111” else
'0';
clk_out<=temp(2);end;P6.5
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity chp6_5 is generic(n:integer:=7);port(clk:in std_logic;
clk_out:out std_logic);end;architecture bhv of chp6_5 is signal temp:std_logic_vector(2 downto 0);signal cout:std_logic;begin process(clk)begin
if clk'event and clk='1' then
temp<=temp+1;
if temp=“110” then temp<=“000”;
end if;
end if;
end process;
cout<='1' when temp=“110” else
'0';
clk_out<=cout;end;P6.6
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity chp6_6 is
port(clk,start,stop,reset:in std_logic;
dig1,dig2,dig3:out std_logic_vector(3 downto 0));end;architecture bhv of chp6_6 is signal sec1:integer range 0 to 10;signal sec2:integer range 0 to 6;signal min:integer range 0 to 10;begin
process(clk,start, stop,reset)
variable count1:integer range 0 to 10;
variable count2:integer range 0 to 6;
variable count3:integer range 0 to 10;
begin
if reset='1' then
count1:=0;
count2:=0;
count3:=0;
elsif clk'event and clk='1' then
if start='1' and stop='0' then
count1:=count1+1;
if count1=10 then
count1:=0;count2:=count2+1;
if count2=6 then
count2:=0;count3:=count3+1;
if count3=10 then
count3:=0;
end if;
end if;
end if;
end if;
end if;
sec1<=count1;
sec2<=count2;
min<=count3;end process;
dig1<=conv_std_logic_vector(sec1,4);
dig2<=conv_std_logic_vector(sec2,4);
dig3<=conv_std_logic_vector(min,4);end;P6.8 library ieee;use ieee.std_logic_1164.all;entity chp6_8 is generic(n:integer:=8);port(input:in std_logic_vector(n-1 downto 0);
output:out std_logic);end;architecture bhv of chp6_8 is begin
process(input)
variable temp:std_logic_vector(n-1 downto 0);
begin
temp(0):=input(0);
for i in 1 to n-1 loop
temp(i):=input(i)xor temp(i-1);
end loop;
output<=temp(n-1);end process;end;
P6.9 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity chp6_9 is
generic(n:integer:=4);
port(input:std_logic_vector(n-1 downto 0);
output:out integer range 0 to n);end;architecture bhv of chp6_9 is begin process(input)
variable temp:integer range 0 to n;begin
temp:=0;
for i in 0 to n-1 loop
if input(i)='1' then
temp:=temp+1;
end if;
end loop;
output<=temp;end process;end;P6.10 library ieee;use ieee.std_logic_1164.all;entity chp6_10 is generic(n:integer :=8);port(din:in integer range 0 to n-1;
dout:out std_logic_vector(n-1 downto 0));end;architecture bhv of chp6_10 is begin process(din)
begin
for i in 0 to n-1 loop
if din=i then dout<=(i=>'1', others=>'0');
end if;
end loop;
end process;end;P6.16
library ieee;use ieee.std_logic_1164.all;entity chp6_16 is generic(n:integer:=8);port(a,b:in std_logic_vector(n-1 downto 0);
cin:in std_logic;
s:out std_logic_vector(n-1 downto 0);
cout:out std_logic);end;architecture bhv of chp6_16 is signal carry:std_logic_vector(n downto 0);begin process(a,b,cin,carry)begin
carry(0)<=cin;
for i in 0 to n-1 loop
s(i)<=a(i)xor b(i)xor carry(i);
carry(i+1)<=(a(i)and b(i))or(a(i)and carry(i))or(b(i)and carry(i));
end loop;
cout<=carry(n);
end process;end;说明:本次答案均为课上讨论过的,P6.11-P6.15均可参考第五章答案,可以利用对应语句将其放入进程中。