常用组合逻辑电路设计.docx
- 文档编号:403334
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:13
- 大小:566.19KB
常用组合逻辑电路设计.docx
《常用组合逻辑电路设计.docx》由会员分享,可在线阅读,更多相关《常用组合逻辑电路设计.docx(13页珍藏版)》请在冰豆网上搜索。
常用组合逻辑电路设计
实验报告
实验日期:
学号:
姓名:
实验名称:
常用组合逻辑电路设计
总分:
一、实验目的
学习常用组合逻辑电路的可中和代码编写,学习并熟悉VHDL编程思想与调试方法,掌握LPM元件实现逻辑设计,从而完成电路设计的仿真验证和硬件验证,记录结果。
二、实验原理
VHDL设计采用层次化的设计方法,自上向下划分系统功能并逐层细化逻辑描述。
层次关系中的没一个模块可以是VHDL描述的实体,上层VHDL代码中实例化出各个下层子模块。
利用VHDL语言和LPM元件设计这两种方法方法实现两个二位数大小比较的电路,根据A数是否大于、小于、等于B数,相应输出端F1、F2、F3为1,设A=A2A1,B=B2B1(A2A1、B2B1表示两位二进制数),当A2A1>B2B1时,F1为1;A2A1 结构图: Vhdl实现 LPM元件实现 Vhdl实现 LPM元件实现 三、实验设计 ①利用VHDL实现 (1)VHDL代码 libraryIEEE; useIEEE.std_logic_1164.all; entitybijiaois port(a2,a1: inSTD_LOGIC; b2,b1: inSTD_LOGIC; f1,f2: bufferSTD_LOGIC; f3: outSTD_LOGIC); endbijiao; architecturebijiao_archofbijiaois begin f1<=(a2and(notb2))or(a1and(notb1)anda2)or(a1and(notb1)and(notb2)); f2<=((nota2)andb2)or((nota2)and(nota1)andb1)or((nota1)andb1andb2); f3<=not(f1orf2); endbijiao_arch; (2)波形仿真 网格大小100ns 结束时间2μs 功能仿真: 输入信号00,01,10,11 时序仿真: (3)仿真分析 周期设置: 为得出如图仿真结果,依据题意设置信号输入周期A2为800ns,A1为400ns,B2为200ns,B1为100ns。 仿真结论: 输入 输出 A2A1 B2B1 F1F2F3 00 00 001 01 010 10 010 11 010 01 00 100 01 001 10 010 11 010 10 00 100 01 100 10 001 11 010 11 00 100 01 100 10 100 11 001 由图表结果得出以下结论: I.当A2A1>B2B1时,F1为1; II.当A2A1 III.当A2A1=B2B1时,F3为1; IV.仿真结果正确。 (4)管脚分配(实验板) InputA2PIN_60 InputA1PIN_59 InputB2PIN_51 InputB1PIN_49 OutputF1PIN_88 OutputF2PIN_87 OutputF3PIN_86 (5)下载验证: 60、59支配A2A1输入信号,51、49支配B2B1输入信号。 88、87、86分别对应显示F1、F2、F3的结果,又信号输出为1时亮,输出为0时不亮。 结果: I.A2A1>B2B1时,F1为1,88亮灯; II.A2A1 III.A2A1=B2B1时,F3为1,86亮灯; 结论: 下载验证结果与管脚分配保持一致。 (6)RTLviewer调试结果 f2~5b2^b1^a1’f1~4b2’^b1’^a1 f2~0b2^a2’f1~2a2^(b1’^a1) f2~2b1^a1’^a2’f1~5(b2^b1’^a1)+(b1’^a2) f1~1b1’^a1 f1~0b2’^a2 f2~6(b2^b1^a1’)+(b2^a2’)+(b1^a1’^a2’) f3~0(b2^b1^a1’)+(b2^a2’)+(b1^a1’^a2’)+(b2^b1’^a1)+(b1’^a2) ②利用LPM元件实现 (1)流程 利用LPM原件定制实现两个二位数大小比较的电路,包括>、<、=、>=、<=、<> 新建工程所在文件夹为lpm_compare2、工程名称为lpm_lpm_compare2、顶层实体名称为lpm_compare2,选择目标器件EPF10K20TI144-4。 选择Tool→MegaWizardplug-inManager命令,或在图形编辑窗口中的空白处双击,在弹出的对话框中选择MegaWizardPlug-inManager,选择Createanewcustommegafunctionvariation,点击Next。 左侧列表中选择InstalledPlug_Ins→Arithmetic→lpm_compare,设置目标器件为Flex10K,元件名为lpm_compare2,文件输出类型为VHDL,单击next。 设置输入数据宽度为2位,选择所需输出端口,单击Next。 设置datab和比较数值符号类型,单击next。 设置流水线,单击Next。 可设置Generatenetlist,单击Next。 选择要生成的文件,单击Finish,完成lpm_compare2的定制。 打开输出路径下地lpm_compare2——waveforms.html。 仿真波形结果如图: 输入二进制信号dataa,datab 结论: 与VHDL仿真验证结果保持一致。 (2)管脚分配(实验板) Inputdataa[1]PIN_60 Inputdataa[0]PIN_59 Inputdatab[1]PIN_51 Inputdatab[0]PIN_49 OutputAeBPIN_95 OutputAgBPIN_92 OutputAgeBPIN_91 OutputAlBPIN_90 OutputAleBPIN_89 OutputAneBPIN_88 (3)下载验证: 60、59支配A2A1输入信号,51、49支配B2B1输入信号。 95、92、91、90、89、88分别对应显示AeB、AgB、AgeB、AlB、AleB、AneB的结果,且信号输出为1时亮,输出为0时不亮。 结果: I.当A=B时,95亮灯; II.当A>B时,92亮灯, III.当A>=B时,91亮灯; IV.当A V.当A<=B时,89亮灯; VI.当A≠时,88亮灯。 结论: 下载验证结果与管脚分配保持一致。 四、思考题 1、VHDL中如何调用用户自定义元件、旧式74系列元件、参数化元件? 答: 调用用户自定义元件: librarywork; usework.package_name._package_name; 调用旧式74系列元件和参数化元件: libraryaltera; usealtera.muxplus2.maxplus2; 调用参数化原件: libraryLPM; useLPM.lpmponents; 2、比较VHDL中的signal与variable? 答: 对信号而言会有延时,而变量则是立即赋值。 变量声明及赋值应在进程中,而信号只需要在整个结构体中声明赋值即可。 在一个进程中,如果对一个信号多次赋值,那么,只有最后一个值才是有效的。 如果对变量多次赋值,那么每次赋值都是有效的,并且,变量的值在再次赋值之前一直保持不变。 3、VHDL中如何设计电路反馈信号? 答: 将端口声明为Buffer端口,而不是out端口。 4、举例说明常用的VHDL顺序执行和并行执行语句? (1)顺序执行语句: 赋值语句、流程控制语句、等待语句、调用语句、返回语句。 (2)并行语句: 并行信号赋值语句、进程语句、块语句、条件信号赋值语句、元件例化语句、并行过程调用语句、参数传递映射语句、端口说明语句。 5、说明VHDL描述组合逻辑电路是signal的作用是什么? 答: 在组合逻辑电路中,signal起到电路内部连接传递的作用。 五、实验日志 遇到的问题: 1、在进行参数设置时,不知道如何设置成仿真图所示。 2、仿真图有细微差别,原因是在LIST选取结点时,未按照信号输入结点的顺序进行点击,即应先点击A2,后点击A1,同理B2B1。 3、在进行LPM宏功能选择对话框的路径必须写明lpm_compare2,未写明是can'tfindfiles。 4、在进行LPM的lpm_compare2文件夹中无法找到lpm_compare2_waveforms.html文件,将查找范围定为all.files解决问题。 疑问: lpm_compare2波形中为什么dataa和datab中出现0、1、2、3等信号。 六、实验心得 通过本次实验,掌握组合逻辑电路设计的方法,掌握并熟悉VHDL实现、LPM元件实现以及RTL调试,并进一步熟练了仿真、下载等流程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 组合 逻辑电路 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)