一、实验前的准备
将北京革新创展科技有限公司GX-SOC/SOPC-CIDE实验箱主板上MODUL_SEL拨码开关组合的1、2、8拨上,3、4、5、6、7拨下,使数码管显示为C1。
二、实验目的
1、熟悉利用QuartusII开发数字电路的基本流程和QuartusII软件的相关操作,
2、掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,利用JTAG/AS进行下载等基本操作。
3、了解VerilogHDL或原理图设计方法。
4、掌握基本组合逻辑的工作原理及设计思路。
5、熟悉北京革新创展科技有限公司GX-SOC/SOPC-CIDE综合创新开发实验平台硬件环境。
三、实验原理
本实验主要设计一个简单的3X8译码器。译码器是把输入的数码解出其对应的数码的器件,译码器有N个二进制选择线,那么最多可译码转换成2N个数据。当一个译码器有N条输入线及M条输出线时,则称为NXM的译码器。3X8译码器是依此而来的。其真值表如下:
输入 输出
A2A1A0 Y7Y6Y5Y4Y3Y2Y1Y0
000 11111110
001 11111101
010 11111011
011 11110111
100 11101111
101 11011111
110 10111111
111 01111111
四、实验内容
使用VerilogHDL语言设计译码器,输入和使能端由拨码开关控制,通过北京革新创展科技有限公司GX-SOC/SOPC-CIDE实验箱主板上LED显示灯来观察译码结果。
五、设计原理图
从图中可见,首先判断使能端口EN状态, 当起满足高电平时,判断三个输入端口A2、A1、A0的状态来决定决定八个输出的状态。输入EN和A需要独立可变的输入激励,所以最好选择开关,独立可变,易于控制;译码输出为8位数据,根据真值表可看出使用独立显示各个数据位的设备较好,故选用8个LED指示灯来表示。因此选用带有4个电平开关,8个LED的第二种组合较好,具体引脚分配见下。
六、引脚分配情况
下表为北京革新创展科技有限公司GX-SOC/SOPC-CIDE实验箱引脚分配表:
设计端口 EP3C55F484芯片引脚 开发平台模块
en PIN_U14 SW1A
a[0] PIN_W17 SW2A
a[1] PIN_T15 SW3A
a[2] PIN_R14 SW4A
y[0] PIN_W13 LED0
y[1] PIN_W15 LED1
y[2] PIN_Y17 LED2
y[3] PIN_R16 LED3
y[4] PIN_T17 LED4
y[5] PIN_AB15 LED5
y[6] PIN_AA16 LED6
y[7] PIN_AB19 LED7
a和en都接到拨码开关输入作为译码输入引脚和使能输入引脚,y接到LED显示灯作为译码输出引脚。
实验步骤:
1、SW1A拨上使能,然后改变SW2A、SW3A、SW4A
2、在LED0~LED7上有8种状态输出。
七、结果分析
对设计进行仿真有多种工具可以选用,此处简单分类:
一:可以用QuartusII自带的仿真器进行仿真;
二:把设计文件直接用Modelsim进行仿真;
三:可以在QuartusII中调用Modelsim进行仿真。
在此介绍第一种和第三种仿真方法。
第一种:用QuartusII自带的仿真器进行仿真,仿真结果如下图所示,符合预定设计的真值表:
第三种:在Quartus中调用Modelsim进行仿真,步骤如下:
简单的方式就是点击QuartusII的Tools-> Options,如下图,选择EDA Tool Options,设置Modelsim的Location of executable为Modelsim应用程序的安装文件夹,注意用的是Windows系统的话,一般是Modelsim的安装文件夹下的win32文件夹。
编译完成后,按下图所示选择Run EDA RTL Simulation;
可以看到Hierarchy中可以看到EDA RTL Simulation这个Progress。
信息提示框内提示已经调用Modelsim进行仿真。
波形仿真结果
当en为低电平时,y的输出为“11111111”,LED灯全亮;当en为高电平时,根据a的输入结果对应产生不同的y的输出结果,相应的LED灯就会变暗。
仿真结束后,可以看到QuartusII 信息栏内有以下提示,表明仿真成功。
参考的modelsim相应Tcl命令如下:
vsim work.decoder
restart
add wave *
force en 0 0,1 800
force a 001 0
run 800 ns
run 600 ns
force a 010
run 600 ns
force a 011
run 600 ns
force a 100
run 600 ns
force a 101
run 600 ns
force a 110
run 600 ns
force a 111
run 600 ns
force en 0
run 600 ns
文后附上Modelsim的简明使用教程,介绍了上文所说的第二种和第三种方法的详细步骤。
八、源程序代码
3X8译码器程序(VerilogHDL):
//Decoder: 3-to 8 decoder with an enable control
module decoder(y,en,a) ;
output [7:0] y ;
input en ;
input [2:0] a;
reg[7:0] y ;
always @ (en or a) // EN 和A 是敏感信号
if(!en) // 如果使能信号为低,无效
y = 8’b1111_1111 ;
else
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 ;
default : y = 8’bx ; // 否则为不确定信号
endcase
endmodule