报告内容一、各类设计环节的性质、目的与任务本软件设计是一门专业基础实践课,是C或C++语言等课程的后续实践课程。本软件设计的目的和任务:1.使学生全面了解如何应用该硬件描述语言进行高速集成电路设计;2.通过软件使用、设计与仿真环节使学生熟悉EDA-VHDL开发环境;3.通过对基本题、综合题的设计实践,使学生掌握硬件系统设计方法(自底向上或自顶向下),熟悉VHDL语言三种设计风格,并且培养学生应用VHDL语言解决实际问题的能力。二、设计内容、学时分配及基本要求本软件设计安排两周的实践,要求:设计及仿真工具的安装与熟悉;选择并完成一个基本课题(16学时);选择并设计一个综合课题(24学时)。三、课题内容:(一)基本题设计一个4对2编码器(输入:I3I2I1I0输出:AB),真值表如图3。I3I2I1I0AB000100100100100000011011图31.对选题的理解(题目要求概述)在数字系统中,常常需要将某一信息(输入)变换为某一特定的代码(输出)。把二进制码按一定的规律排列,例如8421码、格雷码等,使每组代码具有一特定的含义(代表某个数字或是控制信号)称为编码。具有编码功能的逻辑电路称为编码器。编码器有若干个输入,在某一时刻只有一个输入被转换为二进制码。例如8线-3线编码器和4线-2线编码器分别有8输入、3位输出和4位输入、2位输出。根据4-2编码器的真值表得出逻辑表达式为A=I2;B=I1+I3。2.系统分析(系统原理图,算法框图,设计要点、难点和特色点)系统原理图:算法框图:YNYNYNYN设计要点、难点和特色点:编码器有若干个输入,在某一时刻只有一个输入被转换为二进制码。根据真值表看出,具有一个编码状态的,编码只是完全正确的。但是,对于多个编码状态,则编码是没有意义的。从中得到一个启示,它的输入中只能有一个被编码信号,也就是说它们之间是有约束的。而如何正确输入和通过调节时钟显示正确输出是本环节最大难点。3.逻辑仿真图及功能分析结果分析:4-2编码器的逻辑功能就是把输入的每一个高低电平信号编成一个对应的二进制代码。4-2编码器有4个输入A0…A3,2个输出Y0…Y1。其中任何时刻输入只能有一个取值为1,并且有一组对应的2进制码输出。4.时序仿真及分析I3:0A1:0001000100b[1]b[0]=10b[1]b[0]=00开始输入信号a[3]a[2]a[1]a[0]0001b[1]b[0]=01b[1]b[0]=11结果分析:将输入时钟调整为a[3]=5ns,a[2]=10ns,a[1]=15ns,a[0]=20ns后,对照真值表观察实验数据正确。5.调试过程与问题完成代码编写的时刻其实我是激动的,靠自己摸索下调试出了时序仿真图形,但在对照真值表和代码之后发现无法验证仿真的正确性,又仔细校对了代码仍不正确,在咨询老师后,将更改为的功能仿真后,结果与真值表和程序相对应,表明程序编写正确。6.体会和建议体会:这是第一次接触VHDL语言,通过查阅参考书,从零做起,从实际的题目中一点一点了解了VHDL语言的用法。先理解书上一些实际的例题,然后自己去更改、编写程序,从而完成了实验课题。只有通过自己动手实验,才能更快的掌握新的知识,才能发现纯理论学习中发现不了的问题。无论是基本题还是综合题在实验过程中都是遇到了各种各样的问题,困难重重,通过自己的努力完成这次实验收获还是不小的。建议:增加老师讲解如何使用软件模块,以减少在不必要的地方浪费大量的时间。7.附录(VHDL源程序)libraryieee;useieee.std_logic_1164.all;entitybm4_2isport(a:instd_logic_vector(3downto0);b:outstd_logic_vector(1downto0));endbm4_2;architecturertlofbm4_2isbeginprocess(a)begincaseaiswhen0001=b=00;when0010=b=01;when0100=b=10;when1000=b=11;whenothers=b=11;endcase;endprocess;endrtl;