《串行数据检测器》实验报告一、实验目的及要求1.掌握用always语句实现组合逻辑电路;2.学习测试模块中随机数的产生和应用;3.每路输入数据与输出数据均为4位2进制数,当选择开关(至少3位)或输入数据发生变化时,输出数据也相应地变化。二、实验设备(环境)及要求1.实验设备:PC机一台2.环境要求:安装Modelsim仿真软件以及SynplifyPro综合工具三、实验内容与步骤1.根据实验要求编写源代码mux_8.v如下/***@Filemux_8.v*@Synopsis每路输入数据与输出数据均为4位2进制数,当选择开关*(至少3位)或输入数据发生变化时,输出数据也相应地变化。*@Authormouter.net@gmail.com*@Version1*@Date2010-11-05*//*Copyright(C)2010-*By*Allrightreserved*/modulemux_8(addr,in1,in2,in3,in4,in5,in6,in7,in8,mout,ncs);input[2:0]addr;//输入的地址端,3位选择开关input[3:0]in1,in2,in3,in4,in5,in6,in7,in8;//8路数据端输入inputncs;//使能信号output[3:0]mout;//一路输出reg[3:0]mout;//输出声明为寄存器类型always@(addrorin1orin2orin3orin4orin5orin6orin7orin8orncs)//8路输入或者选择开关或者使能信号发生变化则条件触发beginif(!ncs)//低电平使能case(addr)3'b000:mout=in1;//选择开关的3位对应000时,输出等于in1输入;3'b001:mout=in2;//选择开关的3位对应001时,输出等于in1输入;3'b010:mout=in3;//选择开关的3位对应010时,输出等于in1输入;3'b011:mout=in4;//选择开关的3位对应011时,输出等于in1输入;3'b100:mout=in5;//选择开关的3位对应100时,输出等于in1输入;3'b101:mout=in6;//选择开关的3位对应101时,输出等于in1输入;3'b110:mout=in7;//选择开关的3位对应110时,输出等于in1输入;3'b111:mout=in8;//选择开关的3位对应111时,输出等于in1输入;endcaseelsemout=0;//使能信号高电平时输出一直为0;endendmodule2.编写测试模块test_mux_8.v如下/***@Filetest_mux_8.v*@Synopsis这是8路数据选择器mux_8的测试模块*@Author陈昊,mouter.net@gmail.com*@Version1*@Date2010-11-05*//*Copyright(0)2010-*By*Allrightreserved*/`timescale1ns/1nsmoduletest_mux_8;wire[3:0]mout;//声明输出为线网型,4位reg[3:0]in1,in2,in3,in4,in5,in6,in7,in8;//声明8路输入信号reg[2:0]addr;//3位的选择开关,寄存型类型regncs;//1位的寄存器型使能信号//-------------------------------------------------------------产生测试信号------------------------------------------------------initialbeginncs=0;//在初始化模块里将使能信号置为0,让选择器正常工作in8={$random}%16;//使用系统任务$random产生一个0至15之间的数in1={$random}%16;//并赋予输入in2={$random}%16;in3={$random}%16;in4={$random}%16;in5={$random}%16;in6={$random}%16;in7={$random}%16;addr=3'b000;//让选择开关的3位初始对应为000.repeat(5)//重复下面的语句块5次,赋5次值begin#10in8={$random}%16;in1={$random}%16;in2={$random}%16;in3={$random}%16;in4={$random}%16;in5={$random}%16;in6={$random}%16;in7={$random}%16;addr=addr+1;//每执行一次后改变一次选择开关的值,加1end#10$stop;end//-------------------------------------------------------------------------------------------------------------------------------//--------------------------------------------------------实例引用被测试模块-----------------------------------------------------mux_8example(.addr(addr),.in1(in1),.in2(in2),.in3(in3),.in4(in4),.in5(in5),.in6(in6),.in7(in7),.in8(in8),.mout(mout),.ncs(ncs));//-------------------------------------------------------------------------------------------------------------------------------endmodule3.利用Modelsim编译纠错和仿真4.利用SynplifyPro进行综合5.利用QuartusⅡ进行布局布线四、实验结果与数据处理1.Modelsim仿真波形如下,自上向下信号依次为a、b、qOut2.选择AlteraSTRATIX器件库利用SynplifyPro综合产生的RTL级电路如下3.使用QuatusII进行布局布线结果如下4.使用Modelsim进行后仿真波形如下五、分析与讨论1.该8路数据选择器成功通过了综合和布局布线,分析发现,前仿真结果逻辑正确。2.分析后仿真结果发现,电路延时较为严重,本次选择的数据数据在下一次数据来到之后才输出,需要对代码进行进一步优化。六、教师评语签名:日期:成绩