2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 实验二 译码器及其应用

实验二 译码器及其应用

时间:2022-11-26 20:04:30

相关推荐

实验二 译码器及其应用

五、实验步骤与实验结果

法一:基于附件一代码实现74138功能

1、用VHDL设计38译码器。打开QuarterII新建一个基于ALTERA的Cyclone系列FPGA芯片EP1C3T144C8N的项目保存在D:\dianlu\ecp1文件夹中,新建一个Verilog HDL文件,将附件一代码写入,运行无错误,进行引脚锁定(图1-1),重新运行,无误后,进行“Creat symbol files for current file”操作,将decoder38.bsf和decoder38.v文件复制到ecp2文件夹中。

图1-1 引脚锁定图

2、验证38译码器逻辑功能。在电脑安装好usb blaster驱动的前提下,下载到FPGA开发板上进行测试,测试结果如图1-2,注意:LED灯是是Y输出为0时才亮

表2-1

3、用38译码器实现逻辑函数。再创建一个一个基于ALTERA的Cyclone系列FPGA芯片EP1C3T144C8N的项目保存在D:\dianlu\ecp2文件夹中,通过自己设计的74138(decoder38)元件进行的逻辑电路设计,连接完毕后进行引脚锁定,如图3-1。

图3-1 逻辑电路图

将Z的逻辑函数进行仿真,仿真图如图3-2,仿真图解读:由于Z=m0+m2+m4+m7,所以在使能的情况下只有当ABC为000,010,100或111的时候Z才输出1否则输出0,在不使能的情况下,ABC不论输入什么Z输出都为0。

图3-2 仿真图

可以将ecp2的逻辑功能下载到下载到FPGA开发板上进行测试,测试结果可由仿真图或开发板验证,结果如图3-3,注意:LED灯是是Z输出为0时才亮

表3-3

法二:基于附件一代码实现74138功能

1、用VHDL设计38译码器。打开QuarterII新建一个基于ALTERA的Cyclone系列FPGA芯片EP1C3T144C8N的项目保存在D:\dianlu\ecp3文件夹中,新建一个Verilog HDL文件,将附件二代码写入,运行无错误,进行引脚锁定(图1-1),重新运行,无误后,进行“Creat symbol files for current file”操作,将decoder38.bsf和decoder38.v文件复制到ecp4文件夹中。

图1-1 引脚锁定图

2、验证38译码器逻辑功能。在电脑安装好usb blaster驱动的前提下,下载到FPGA开发板上进行测试,测试结果如图1-2,注意:LED灯是是Y输出为0时才亮

表2-1

3、用38译码器实现逻辑函数。再创建一个一个基于ALTERA的Cyclone系列FPGA芯片EP1C3T144C8N的项目保存在D:\dianlu\ecp4文件夹中,通过自己设计的74138(decoder38)元件进行的逻辑电路设计,连接完毕后进行引脚锁定,如图3-1。

图3-1 逻辑电路图

将Z的逻辑函数进行仿真,仿真图如图3-2,仿真图解读:由于Z=m0+m2+m4+m7,所以在使能的情况下只有当ABC为000,010,100或111的时候Z才输出1否则输出0,在不使能的情况下,ABC不论输入什么Z输出都为0。

图3-2 仿真图

可以将ecp2的逻辑功能下载到FPGA开发板上进行测试,测试结果可由仿真图或开发板验证,结果如图3-3,注意:LED灯是是Z输出为0时才亮

表3-3

六、实验讨论与总结

1.准备工作,Quattus II7.2的安装和基本使用,EDA设计大致分三步,设计、仿真和下载验证

2. 附件一和附件二代码的区别主要在于输出Y的不同,前者端口非常明确,方便连接电路,但是后者在连接电路的时候要用总线连接出来一根线,并修改“Properties”接出来的总线为Y[7..0],其余端口的根据自己的需求设置“Properties”为Y[i],i=1,2…7

3. 引脚锁定的时候一定要注意逻辑顺序,方便下载到开发板上验证,注意仿真的时候“Simulation”要设置成“Functional”,设置好模拟的信号后,一定要先点一下“Generate Functional Simulation Netlist”不然会报错。

4. LED灯是逻辑0才亮,好处在于解决了器件供能不足的情况,一定注意,灯亮不一定就是逻辑1,要根据实际的情况。

6.138代码书写的时候endmodule后是没有分号的,输入不定义成reg类型,138的输出一定要定义成reg类型

7.往开发板下载验证的时候一定要有驱动,“Mode”要选择“JTAG”,说明可以连线操作

附件一:74138Verilog代码1

module decoder38(A2,A1,A0,E1,E2N,E3N,Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0);input A2,A1,A0,E1,E2N,E3N;output Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0;reg Y7,Y6,Y5,Y4,Y3,Y2,Y1,Y0 ;wire E = E1 & (!E2N) & (!E3N);wire [2:0] A ={A2,A1,A0};always @(E,A)beginif(E)case(A)3'b000:begin Y7=1'b1; Y6=1'b1; Y5=1'b1; Y4=1'b1; Y3=1'b1; Y2=1'b1; Y1=1'b1; Y0=1'b0;end3'b001:begin Y7=1'b1; Y6=1'b1; Y5=1'b1; Y4=1'b1; Y3=1'b1; Y2=1'b1; Y1=1'b0; Y0=1'b1;end3'b010:begin Y7=1'b1; Y6=1'b1; Y5=1'b1; Y4=1'b1; Y3=1'b1; Y2=1'b0; Y1=1'b1; Y0=1'b1;end3'b011:begin Y7=1'b1; Y6=1'b1; Y5=1'b1; Y4=1'b1; Y3=1'b0; Y2=1'b1; Y1=1'b1; Y0=1'b1;end3'b100:begin Y7=1'b1; Y6=1'b1; Y5=1'b1; Y4=1'b0; Y3=1'b1; Y2=1'b1; Y1=1'b1; Y0=1'b1;end3'b101:begin Y7=1'b1; Y6=1'b1; Y5=1'b0; Y4=1'b1; Y3=1'b1; Y2=1'b1; Y1=1'b1; Y0=1'b1;end3'b110:begin Y7=1'b1; Y6=1'b0; Y5=1'b1; Y4=1'b1; Y3=1'b1; Y2=1'b1; Y1=1'b1; Y0=1'b1;end3'b111:begin Y7=1'b0; Y6=1'b1; Y5=1'b1; Y4=1'b1; Y3=1'b1; Y2=1'b1; Y1=1'b1; Y0=1'b1;enddefault:begin Y7=1'b1; Y6=1'b1; Y5=1'b1; Y4=1'b1; Y3=1'b1; Y2=1'b1; Y1=1'b1; Y0=1'b1;endendcaseelse begin Y7=1'b1; Y6=1'b1; Y5=1'b1; Y4=1'b1; Y3=1'b1; Y2=1'b1; Y1=1'b1; Y0=1'b1;endendendmodule

附件二:74138Verilog代码2

基于总线式的

module decoder38(A2,A1,A0,E1,E2N,E3N,Y);input A2,A1,A0,E1,E2N,E3N;output reg [7:0] Y;wire [2:0] A={A2,A1,A0};wire E=E1&(!E2N)&(!E3N);always @(E,A)beginif(E)case(A)3'b000:Y=8'b1111_1110;3'b001:Y=8'b1111_1101;3'b010:Y=8'b1111_1011;3'b011:Y=8'b1111_0111;3'b100:Y=8'b1110_1111;3'b101:Y=8'b1101_1111;3'b110:Y=8'b1011_1111;3'b111:Y=8'b0111_1111;defaultY=8'b1111_1111;endcaseelseY=8'b1111_1111;endendmodule

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。