首页 > 编程知识 正文

远程FPGA虚拟实验平台用SystemVerilog HDL实现七段译码器

时间:2023-05-05 22:23:38 阅读:122090 作者:2306

在远程FPGA虚拟实验平台上使用系统验证HDL实现7段解码器源代码虚拟板模块SevenSegDecode模块的测试、存储和提交

源代码

要在远程FPGA虚拟实验平台上使用系统验证HDL实现五位二进制数,需要将代码分成两个模块,才能在七段解码器中显示为十六进制数。

VirtualBoard模块需要向现有的VirtualBoard.sv中添加模块中7段解码器模块的实例化语句。 因此,VirtualBoard.sv中的所有代码如下所示:

` default _ nettypenonemodulevirtualboard (inputlogicclock,/10 mhzinputclockinputlogic [ 193:0 ] Pb,/20 pushbuttoogic logical1whenpressedinputlogic [ 35:0 ] s,/36 switchesoutputlogic [ 3533600 ] l,//36 LEDs,驱动器日志/8commonanodeseven-segmentdisplayoutputlogic [ 7:0 ] sd6,output logic [7:0] SD5,output logic [7:0] SD4, output logic [7:0] SD2,实例化output //七级解码器模块,其中S[12:8]为五位二进制数,在SD1中表示是虚拟实验请求。 sevensegdecodessd _ inst (.idata (s [ 12:8 ], OSEG ) SD1 ); //led上8段的电平值assign L[7:0]=SD1; 在由7段解码器模块实例化的语句中,用S[11:8]替换S[12:8],endmodule可以显示四位二进制数字。

SevenSegDecode模块根据实验要求,如图所示,七级解码器模块需要创建新的系统验证HDL文件。

然后在文件中输入代码。 ()五位二进制字母部分仅供参考。 )

modulesevensegdecode (输入逻辑[ 4:0 ] idata,//这里是五位二进制代码,更改为[3:0]则是四位二进制代码output logic [ 73:0 ] always_comb/*case(idata )/4位二进制4(b0000:OSEG=8) b11000000; 4'b0001: oSeg=8'b11111001; 4'b0010: oSeg=8'b10100100; 4'b0011: oSeg=8'b10110000; 4'b0100: oSeg=8'b10011001; 4'b0101: oSeg=8'b10010010; 4'b0110: oSeg=8'b10000010; 4'b0111: oSeg=8'b11111000; 4'b1000: oSeg=8'b10000000; 4'b1001: oSeg=8'b10010000; 4'b1010: oSeg=8'b10001000; 4'b1011: oSeg=8'b10000011; 4'b1100: oSeg=8'b11000110; 4'b1101: oSeg=8'b10100001; 4'b1110: oSeg=8'b10000110; 4'b1111: oSeg=8'b10001110; default: oSeg=8'b11111111; endcase*/case(idata )/5位二进制5(b00000:oseg=8) b11000000; 5'b00001: oSeg=8'b11111001; 5'b00010: oSeg=8'b10100100; 5'b00011: oSeg=8'b10110000; 5'b00100: oSeg=8'b10011001; 5'b00101: oSeg=8'b10010010; 5'b00110: oSeg=8'b10000010; 5'b00111: oSeg=8'b11111000; 5'b01000: oSeg=8'b10000000; 5'b01001: oSeg=8'b10010000; 5'b01010: oSeg=8'b10001000; 5'b01011: oSeg=8'b10000011; 5'b01100: oSeg=8'b11000110; 5'b01101: oSeg=8'b10100001; 5'b01110: oSeg=8'b10000110; 5'b01111: oSeg=8'b10001110; //F5 ' b 100003360 oseg=8' b 11000010; //G5 ' b 100013360 oseg=8' b 10001001; //H5 ' b 100103360 oseg=8' b 11111010; //i5 ' b 100113360 oseg=8' b 11110001; //j5 ' b 101003360 oseg=8' b 10001010; //K5 ' b 10101: oseg=8' b 11000111; //l5 ' b 101103360 oseg=8' b 11001000; //M5 ' b 101113360 oseg=8' b 10101011; //n5 ' b 110003360 oseg=8' b 10100011; //o5 ' b 110013360 oseg=8' b 10001100; //P5 ' b 110103360 oseg=8' b 10011000; //q5 ' b 110113360 oseg=8' b 10101111; //r5 ' b 111003360 oseg=8' b 10110110; //S5 ' b 111013360 oseg=8' b 10000111; //t5 ' b 111103360 oseg=8' b 11000001; //U5'B111113360OSEG=8'B11100011; //v default : oseg=8' b 11111111; endcaseendmodule位二进制代码的字符匹配源在此(字符I略有更改。 因为我觉得我的I更可爱) )。

需要注意的是,在慕业的作业中用这样的L是错误的,我也还没找到正确的。 (更新后发现老师慕业的回答错了。)。

测试、保存和提交新创建的SystemVerilog HDL文件并保存时,建议将其保存在工程文件夹中的resource文件夹中,并与VirtualBoard.sv一起放置,以便于查找。

交作业的时候记得还要交七级解码器的模块。

如果要选择版本,在虚拟实验平台上测试时自己制作版本并打开开关就可以了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。