关于FPGA入门实验2——二进制到格雷码的转换的一个记录
实验中作用到的仪器信息:
芯片商家:ALTERA
编程软件:Quartus II
试验箱上的芯片型号:EP4CE6E22C8N
🚀题目
用Verilog语言设计一个4位的二进制格雷码转换电路并使用实验箱进行验证
一、二进制转换为格雷码
格雷码(循环二进制单位距离码)是任意两个相邻数的代码只有一位二进制数不同的编码,它与奇偶校验码同属可靠性编码。
4位二进制数与格雷码一一对应如下:
由上图可以看到:
从对应的n位二进制码字中直接得到n位格雷码码字,需要先对n位二进制的码字,从右到左,以0到n-1编号。如果二进制码字的第i位和i1位相同,则对应的格雷码的第i位为0,否则为1(当i+1n时,二进制码字的第n位被认为是0,即第n-1位不变)。如下图所示(图片来源见水印):
根据上面的分析,我们可以用以下的代码来实验二进制到格雷码的转换过程:
module bit2gray_2(input wire k1, //二进制数值的最高位
input wire k2, //二进制数值的次高位
input wire k3, //二进制数值的次低位
input wire k4, //二进制数值的最低位
output reg l1, //格雷码数值的最高位
output reg l2, //格雷码数值的次高位
output reg l3, //格雷码数值的次低位
output reg l4); //格雷码数值的最低位
always @(*)begin
l4=k4^k3; //二进制的第四和第三位进行异或得到格雷码第四位
l3=k3^k2;
l2=k2^k1;
l1=k1^0;
end
endmodule
二、软件仿真
三、硬件箱实验
1、分析与代码
我们将输入的二进制数对应到按键K1到K4,将输出的格雷码对应LED灯LED1到LED4,于是我们便能够通过拨动按键设置一个二进制的数值,通过LED的亮灭情况查看对应的格雷码。
我们通过将按键K8设置为使能位,当按键K8使能时,K1到K4所对应的四位二进制码有效;同时,由于试验箱上的LED是低电平驱动,因此还需要对输出进行取反。实现代码如下:
module bit2gray_2(input wire k1,
input wire k2,
input wire k3,
input wire k4,
input wire k8,
output reg l1,
output reg l2,
output reg l3,
output reg l4);
always @(*)begin
if(k8)begin
l4=!(k4^k3);
l3=!(k3^k2);
l2=!(k2^k1);
l1=!(k1^0);
end
end
endmodule
2、编译
点击菜单栏的【编译】进行编译
编译完成后,可以看到代码对应的RTL图如下,
3、引脚分配
若使用下载线将按键接口JX22连接到JP5,那么按键K1对应第59脚,按键K2对应第60脚,按键K3对应第64脚,按键K4对应第65脚,按键K8对应第69脚。
若使用下载线将按键接口JX5连接到JP1,那么按键L1对应第138脚,按键L2对应第137脚,按键L3对应第136脚,按键L4对应第135脚。
点击菜单栏的这个图标即可进行引脚分配
双击location列的空格即可开始每个引脚的分配,引脚分配结果如下:
引脚分配完成后要记得再编译一次,否则可能导致程序下载在试验箱后没有现象。
4、接线与烧录
用下载线将按键接口JX22连接到JP5,将按键接口JX5连接到JP1,JTAG接口用下载线连接到电脑的USB口。
点击菜单栏里的【Programer】图标开始烧录
5、实验结果
【FPGA实验2】二进制转格雷码