八位二进制BCD码转换器.docx

上传人:b****6 文档编号:3337691 上传时间:2022-11-21 格式:DOCX 页数:9 大小:1.59MB
下载 相关 举报
八位二进制BCD码转换器.docx_第1页
第1页 / 共9页
八位二进制BCD码转换器.docx_第2页
第2页 / 共9页
八位二进制BCD码转换器.docx_第3页
第3页 / 共9页
八位二进制BCD码转换器.docx_第4页
第4页 / 共9页
八位二进制BCD码转换器.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

八位二进制BCD码转换器.docx

《八位二进制BCD码转换器.docx》由会员分享,可在线阅读,更多相关《八位二进制BCD码转换器.docx(9页珍藏版)》请在冰豆网上搜索。

八位二进制BCD码转换器.docx

八位二进制BCD码转换器

实验报告:

8位二进制-BCD码转换器

姓名:

学号:

指导教师:

一.实验目的

了解二进制-BCD码转换器实现原理,掌握移位加3算法,熟悉Verilog编程中模块复用模式。

二.实验任务

1.掌握用移位加三算法实现二进制-BCD码转换器的设计;

2.设计Verilog实验程序;

3.生成比特流文件,将文件下载到开发板中进行硬件验证。

三.实验设备

1.计算机(安装XilinxISE10.1软件平台);

2.NEXYS2FPGA开发板一套(带USB-MIniUSB下载线)

四.实验原理

设计任意数目输入的二进制-BCD码转换器的方法就是采用移位加三算法(ShiftandAdd3Algorithm)。

此方法包含以下4个步骤:

1)把二进制左移1位;

2)如果共移了8位,那么BCD数就在百位、十位和个位列;

3)如果在BCD列中,任何一个二进制数是5或者比5更大,那么就在BCD列的数值加上3;

4)回到步骤1)。

其工作过程如图1所示:

图1.一个8位的二进制数转换成BCD码的步骤

五.实验内容

在XilinxISE10.1上完成8位二进制-BCD码转换器设计,输入设计文件,仿真后,生成二进制码流文件下载到FPGA开发板上进行验证;

1)依照实验1的方式,在XilinxISE10.1中新建一个工程example02;

2)在工程管理区任意位置单击鼠标右键,在弹出的快捷菜单中选择“NewSource”命令,弹出新建源代码对话框,这里我们选择“VerilogModule”类型,输入Verilog文件名“binbcd8.v”,完整代码如下:

modulebinbcd8(

input[7:

0]b,

outputreg[9:

0]p

);

reg[17:

0]z;

integeri;

always@(*)

begin

for(i=0;i<=17;i=i+1)

z[i]=0;

z[10:

3]=b;

repeat(5)//重复5次

begin

if(z[11:

8]>4)

z[11:

8]=z[11:

8]+3;

if(z[15:

12]>4)

z[15:

12]=z[15:

12]+3;

z[17:

1]=z[16:

0];

end

p=z[17:

8];

end

endmodule

3)设计相应的7段显示管程序,将相应的十进制数在开发板的显示管上显示出来。

建立文件类型为“VerilogModule”的“x7segb.v”,完整代码如下

modulex7segb(

input[15:

0]x,

inputclk,

inputclr,

outputreg[6:

0]a_to_g,

outputreg[3:

0]an,

outputdp

);

wire[1:

0]s;

reg[3:

0]digit;

wire[3:

0]aen;

reg[19:

0]clkdiv;

assigndp=1;

assigns=clkdiv[19:

18];

assignaen[3]=x[15]|x[14]|x[13]|x[12];

assignaen[2]=x[15]|x[14]|x[13]|x[12]

|x[11]|x[10]|x[9]|x[8];

assignaen[1]=x[15]|x[14]|x[13]|x[12]

|x[11]|x[10]|x[9]|x[8]

|x[7]|x[6]|x[5]|x[4];

assignaen[0]=1;

//4位4选1

always@(*)

case(s)

0:

digit=x[3:

0];

1:

digit=x[7:

4];

2:

digit=x[11:

8];

3:

digit=x[15:

12];

default:

digit=x[3:

0];

endcase

//数码管显示

always@(*)

case(digit)

0:

a_to_g=7'b0000001;

1:

a_to_g=7'b1001111;

2:

a_to_g=7'b0010010;

3:

a_to_g=7'b0000110;

4:

a_to_g=7'b1001100;

5:

a_to_g=7'b0100100;

6:

a_to_g=7'b0100000;

7:

a_to_g=7'b0001111;

8:

a_to_g=7'b0000000;

9:

a_to_g=7'b0000100;

'hA:

a_to_g=7'b0001000;

'hB:

a_to_g=7'b1100000;

'hC:

a_to_g=7'b0110001;

'hD:

a_to_g=7'b1000010;

'hE:

a_to_g=7'b0110000;

'hF:

a_to_g=7'b0111000;

default:

a_to_g=7'b0000001;//0

endcase

//digitselect

always@(*)

begin

an=4'b1111;

if(aen[s]==1)

an[s]=0;

end

//时钟分频器

always@(posedgeclkorposedgeclr)

begin

if(clr==1)

clkdiv<=0;

else

clkdiv<=clkdiv+1;

end

Endmodule

4)设计8位二进制-BCD码转换器的顶层模块,如图3所示,下面的程序清单给出了实现这个顶层模块设计的Verilog程序,文件名为“binbcd8_top.v。

图3.顶层模块

modulebinbcd8_top(

inputmclk,

input[3:

3]btn,

input[7:

0]sw,

output[7:

0]led,

output[6:

0]seg,

output[3:

0]an,

outputdp

);

wire[15:

0]x;

wire[9:

0]p;

assignx={6'b000000,p};

assignled=sw;

binbcd8B1(.b(sw),

.p(p)

);

x7segbM1(.x(x),

.clk(mclk),

.clr(btn[3]),

.a_to_g(seg),

.an(an),

.dp(dp)

);

Endmodule

5)导入其UCF文件,并进行编辑,代码如下:

NET"mclk"LOC="B8";

NET"btn<3>"LOC="A7";

NET"sw<0>"LOC="P11";

NET"sw<1>"LOC="L3";

NET"sw<2>"LOC="K3";

NET"sw<3>"LOC="B4";

NET"sw<4>"LOC="G3";

NET"sw<5>"LOC="F3";

NET"sw<6>"LOC="E2";

NET"sw<7>"LOC="N3";

NET"Led<0>"LOC="M5";

NET"Led<1>"LOC="M11";

NET"Led<2>"LOC="P7";

NET"Led<3>"LOC="P6";

NET"Led<4>"LOC="N5";

NET"Led<5>"LOC="N4";

NET"Led<6>"LOC="P4";

NET"Led<7>"LOC="G1";

NET"seg<6>"LOC="L14";

NET"seg<5>"LOC="H12";

NET"seg<4>"LOC="N14";

NET"seg<3>"LOC="N11";

NET"seg<2>"LOC="P12";

NET"seg<1>"LOC="L13";

NET"seg<0>"LOC="M12";

NET"dp"LOC="N13";

NET"an<0>"LOC="F12";

NET"an<1>"LOC="J12";

NET"an<2>"LOC="M13";

NET"an<3>"LOC="K14";

6)进行综合和实现,然后生成二进制比特文件。

7)将生成的二进制比特文件下载到开发板上,观察运行结果。

 

六.实验结果

 

 

七.实验心得及体会

通过本次实验让我了解了8位二进制—BCD码转换器的工作原理。

也让我更加熟悉了ise软件的使用,对Verilog语法有了更深的理解,在本次实验中由于忽略了语法错误,导致实验完成花费了很长时间,让我更了解了Verilog语法的重要性。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1