Verilog第7章
- 格式:pdf
- 大小:902.80 KB
- 文档页数:7
Verilog-HDL与CPLD/FPGA设计应用讲座 李媛媛 常晓明 [04.2.19] 第 7 讲 用Verilog-HDL做CPLD设计 组合逻辑电路的实现 7.1 与非门的实现 7.2 2-1数据选择器的实现 7.3 2位二进制编码器的实现 7.4 1位数据比较器的实现
本讲中,我们通过由浅入深的实例来介绍组合逻辑电路在目标板上是如何实现的。
7.1 与非门的实现[To top]
首先,来实现一个用两个开关控制一个灯的设计。期望达到的目的如表1所示。
表1 两个开关控制一个灯的真值表
分析表1可以得到下述结论:如果两个开关S1和S2中,任意有一个为低电平,灯都不亮;只有当两个开关S1和
S2同时为高电平时,灯才亮。因此,我们考虑采用与非门来实现设计。图1示出了符合表1的逻辑功能框图。
图1 与非门设计的逻辑功能框图
其中,S1_1和S1_2表示开关,对应表1中的S1和S2,打开时为高电平,闭合时为低电平,作为输入;LED0表示发
光二级管,对应表1中的LED,作为输出;33、34和44为上述变量对应芯片XC9536的引脚;33和34旁边的三角形表示
上拉电阻(下文同)。虚线框中的部分是CPLD设计,实现与非门的功能。
根据图1,可以对该电路进行Verilog-HDL描述。
/* 与非门的Verilog-HDL描述*/
module S2_D1 ( S1_1, S1_2, LED0 ); // 模块名及端口定义,范围至endmodule
input S1_1, S1_2; // 输入端口定义,S1_1和S1_2分别对应XC9536的第34和33脚
output LED0; // 输出端口定义,对应XC9536的第44脚
nand U1 ( LED0, S1_1, S1_2 ); // 门级描述语句,实现与非门的功能
endmodule // 模块结束
Page 1 of 7Verilog-HDL讲座
2007-7-4http://www.xiaoming-lab.com/06%20apply/06-08-007-VerilogTech/06-08-007-VerilogTech07.htm
把以上与非门的Verilog-HDL描述,用Webpack Project Navigator软件,生成目标文件,并通过下载电缆写入
芯片XC9536中。然后,将芯片插到目标板上,即可实现用两个开关通过与非门控制一个灯的功能。图2示出了下载过
程中出现的引脚配置画面。
图2 两个开关通过与非门控制一个灯的引脚配置画面
7.2 2-1数据选择器的实现[To top]
在第五讲中,已经详细地介绍过2-1数据选择器的Verilog-HDL描述方法,并且对其进行了仿真。这里,我们来
看一下它是如何在目标板上实现的。
2-1数据选择器的真值表如表2所示。
表2 2-1数据选择器的真值表
由表2可以得到下述结论:当SEL=0时,F=A;当SEL=1时,F=B。因此,我们考虑采用如图3所示的逻辑功能框图
来实现。
图3 2-1数据选择器的逻辑功能框图 其中,S1_1、S1_2和S1_3表示开关,对应表2中的A、B和SEL,打开时为高电平,闭合时为低电平,作为2-1数据
选择器的输入;LED0表示发光二级管,对应表2中的F,作为其输出。29、33、34和44是上述变量对应芯片XC9536的
Page 2 of 7Verilog-HDL讲座
2007-7-4http://www.xiaoming-lab.com/06%20apply/06-08-007-VerilogTech/06-08-007-VerilogTech07.htm
引脚。虚线框中的部分是CPLD设计,实现2-1数据选择器的功能。
根据图3,对该电路进行Verilog-HDL描述。
/* 2-1数据选择器的Verilog-HDL描述*/
module SEL (S1_1, S1_2, S1_3, LED0 ); // 模块名及端口定义,范围至endmodule
input S1_1, S1_2, S1_3; // 输入端口定义,S1_1、S1_2和S1_3分别对应XC9536的第34、33和29脚
output LED0; // 输出端口定义,对应第44脚
assign LED0= ( S1_3 ==0 ) ? S1_1 : S1_2;
// 条件表达式,实现2-1数据选择器的功能。
// 如果S1_3 =0,则LED0= S1_1;否则,LED0= S1_2
endmodule // 模块结束
把以上2-1数据选择器的Verilog-HDL描述,用Webpack Project Navigator软件,生成目标文件,并通过下载电
缆写入芯片XC9536中。然后,将芯片放到目标板上,即可实现2-1数据选择器。图4示出了下载过程中出现的引脚配
置画面。
图4 2-1数据选择器的引脚配置画面
7.3 2位二进制编码器的实现[To top] 同样,在第五讲中,也已经详细地介绍了2位二进制编码器的Verilog-HDL描述方法,并且对其进行了仿真。这
里,也来看一下它是如何在目标板上实现的。
2位二进制编码器的真值表如表3所示。
表3 2位二进制编码器的真值表
分析表3可以得到下述结论:4个输入IN0-IN3在同一时刻只有一个为高电平,而输出Y0-Y1根据不同的状态分别
进行编码。因此,可以采用如图5所示的逻辑功能框图来实现。
Page 3 of 7Verilog-HDL讲座
2007-7-4http://www.xiaoming-lab.com/06%20apply/06-08-007-VerilogTech/06-08-007-VerilogTech07.htm
图5 2位二进制编码器的逻辑功能框图
其中,S1_1、S1_2、S1_3和S1_4表示开关,对应表3中的IN0、IN1、IN2、IN3,打开时为高电平,闭合时为低电
平,作为2位二进制编码器的输入;LED0和LED1表示发光二级管,对应表3中的Y0和Y1,作为其输出。28、29、33、
34、43和44是上述变量对应芯片XC9536的引脚。虚线框中的部分是CPLD设计,实现2位二进制编码器的功能。
根据图5,可以对该电路进行Verilog-HDL描述。
/* 2位二进制编码器的Verilog-HDL描述*/
/* Data Definision */ // 数据定义
`define SW_IN0 4'b0001 // 编译时,将SW_IN0转换为4bit的二进制数0001
`define SW_IN1 4'b0010 // 编译时,将SW_IN1转换为4bit的二进制数0010
`define SW_IN2 4'b0100 // 编译时,将SW_IN2转换为4bit的二进制数0100
`define SW_IN3 4'b1000 // 编译时,将SW_IN3转换为4bit的二进制数1000
/* ENCORDER */ // 主模块
module ENC ( S1, LED ); // 模块名及参数定义,范围至endmodule
input [3:0] S1; // 输入端口定义,S1[0]-S1[3]分别对应第34、33、29和28脚
output [1:0] LED; // 输出端口定义,LED[0]-LED[1] 分别对应第44和43脚
assign LED = FUNC_ENC ( S1 ); // 用assign语句实现function函数调用 function [1:0] FUNC_ENC; // function函数及函数名,至endfunction为止 input [3:0] S1; // 输入端口定义
case ( S1 ) // case语句,至endcase为止 `SW_IN0 : FUNC_ENC = 0; // 当S1= SW_IN0时,返回0 `SW_IN1 : FUNC_ENC = 1; // 当S1= SW_IN1时,返回1 `SW_IN2 : FUNC_ENC = 2; // 当S1= SW_IN2时,返回2 `SW_IN3 : FUNC_ENC = 3; // 当S1= SW_IN3时,返回3 endcase // case语句结束 endfunction // function函数结束 endmodule // 模块结束
把以上2位二进制编码器的Verilog-HDL描述,用Webpack Project Navigator软件,生成目标文件,并通过下载
电缆写入芯片XC9536中。然后,将芯片插到目标板上,即可实现2位二进制编码器。图6示出了下载过程中出现的引
脚配置画面。
Page 4 of 7Verilog-HDL讲座
2007-7-4http://www.xiaoming-lab.com/06%20apply/06-08-007-VerilogTech/06-08-007-VerilogTech07.htm
图6 2位二进制编码器的引脚配置画面
7.4 1位数据比较器的实现[To top]
数据比较器是用来对两个二进制数的大小进行比较或检测是否相等的逻辑电路,在数字逻辑的设计中占有重要
的位置。
1位数据比较器应有两个宽度为1的数据输入端口。设其输入分别为A和B,输出分别为A=B、A>B和A
值表,如表4所示。
表4 1位数据比较器的真值表
分析表4可以得出如下结论:
A=B的逻辑表达式为:/A·/B+A·B;
A>B的逻辑表达式为:A·/B
A
因此,可以采用如图7所示的逻辑功能框图来实现。
图7 1位数据比较器的逻辑功能框图
其中,S1_1和S1_2表示开关,对应表4中的A和B,打开时为高电平,闭合时为低电平,作为1位数据比较器的输
入;LED0、LED1和LED2表示发光二级管,对应表4中的A=B、AB,作为其输出。33、34、38、43和44是上述变
量对应芯片XC9536的引脚。虚线框中的部分是CPLD设计,实现1位数据比较器的功能。
根据图7,可以对该电路进行Verilog-HDL描述。
Page 5 of 7Verilog-HDL讲座
2007-7-4http://www.xiaoming-lab.com/06%20apply/06-08-007-VerilogTech/06-08-007-VerilogTech07.htm