实验项目名称 |
实验二 龙芯平台组合逻辑电路实验 |
实验成绩 |
|||||||||||||||||||||||||||||||||||||||
实 验 者 |
D.D.D. |
专业班级 |
|||||||||||||||||||||||||||||||||||||||
实验日期 |
2023年5月19日 |
||||||||||||||||||||||||||||||||||||||||
一、实验目的 1. 熟悉龙芯实验平台; 2. 熟悉Vivado软件使用及fpga编程过程; 3. 熟悉数码管原理; 3. 掌握组合逻辑设计,熟悉数码管工作原理以及二进制与BCD码的转换。 二、实验内容 BCD码转换显示为10进制,即(0-9),从拨码开关输入二进制数,数码管显示输出的BCD码。 三、实验过程 实验过程包含: 1.完整的再现实验过程,尤其Vivado软件使用流程; 2. 各阶段形成的文件代码逐行注释; 3. 在实验内容实现过程中,需有明确的列表给出8421BCD码与7段数码管输入的对应关系。 实验过程: 1.首先了解BCD码的编码原则,以及与10进制之间的关系,明白实验要求中用一个7段共阴极数码管(它的二进制表示中,左边第 1 个比特位为数码管 dp 端口控制位,最右边第 7 个比特位为数码管 a 端口控制位,依次类推,其中 1 代表该端口需要激活,0 则代表该端口不需要激活。)显示十进制数值的具体内容(显示0-9),如下图;
2.了解7段共阴极数码管是如何显示的,共阴极数码管在控制端输入高电平,则数码管点 亮;输入低电平,则数码管熄灭。并理解弄清针脚的对应关系; 3.使用Vivado2022.2进行操作,按照一般过程,创建project,添加源文件,分析.v与.xdc分别不同的作用; 4.理解实验平台中,代码含义与其具体的功能,根据BCD码和10进制数的对应关系(问号和冒号组成了条件运算符,用于根据条件为真或为假的情况返回不同的值。如果条件为真,将返回冒号后面的内容,为假则继续向下判断)添加.v文件,输入代码: ``` //例如8'b01111110 中8表示八位数据位宽,b表示二进制,01111110表示七段数码管上显示数字 0 所需的控制码字。 `timescale 1ns / 1ps // 定义模块的时间刻度 module BCD( input [3:0] bcd, // ,开辟4位输入,输入 4 位的 BCD 码 output [7:0] seg7 // 开辟8位输出,对应7段共阴极数码管针脚(小数点所对应针脚后面无论哪种情况,均为0),输出 8 位的七段数码管码字 ); assign seg7= // 将输入的 BCD 码转换为七段数码管的对应码字并赋值给输出,即赋值给8位输出 {bcd ==4'b0000}?8'b01111110 ://当输入为0000时,为真,将问号后的值传给seg7,下面同理 {bcd ==4'b0001}?8'b00110000 ://1 {bcd ==4'b0010}?8'b01101101 ://2 {bcd ==4'b0011}?8'b01111001 ://3 {bcd ==4'b0100}?8'b00110011 ://4 {bcd ==4'b0101}?8'b01011011 ://5 {bcd ==4'b0110}?8'b01011111 ://6 {bcd ==4'b0111}?8'b01110000 ://7 {bcd ==4'b1000}?8'b01111111 ://8 {bcd ==4'b1001}?8'b01111011 ://9 8'b01111011;//9 // BCD 码不能大于 9,超出位9,该行赋值为 9 的码字 endmodule ``` 5.根据引脚与其他要求,以及代码含义,创建.xdc文件,可以通过调整I/O Ports生成;其代码通过 set_property 命令设置物理引脚与开发板端口的映射关系。PACKAGE_PIN 参数表示要映射的物理引脚的名称。IOSTANDARD 参数表示该物理引脚所使用的电平标准,LVCMOS33 为 3.3V CMOS 电平标准。get_ports 命令表示从 RTL 组件中的某个端口获取其名称。将输入引脚 bcd 的每一位与开发板上对应的 T3、J3、M2 和 P1 引脚连接,将输出引脚 seg7 的每一段与开发板上对应的 B19、D19、B21、A19、E18、C19、B17 和 C17 引脚连接。(代码对于空格或者回车敏感,需要注意空格的数目)代码以及注释如下: set_property -dict {PACKAGE_PIN T3 IOSTANDARD LVCMOS33} [get_ports {bcd [0]}]将开发板上的 T3 引脚与输入信号 bcd 的第 0 位端口连接,并将 IO 标准设置为 LVCMOS33,下同。 set_property -dict {PACKAGE_PIN J3 IOSTANDARD LVCMOS33} [get_ports {bcd [1]}] set_property -dict {PACKAGE_PIN M2 IOSTANDARD LVCMOS33} [get_ports {bcd [2]}] set_property -dict {PACKAGE_PIN P1 IOSTANDARD LVCMOS33} [get_ports {bcd [3]}] set_property -dict {PACKAGE_PIN B19 IOSTANDARD LVCMOS33} [get_ports { seg7[7]}] set_property -dict {PACKAGE_PIN D19 IOSTANDARD LVCMOS33} [get_ports { seg7[4]}] set_property -dict {PACKAGE_PIN B21 IOSTANDARD LVCMOS33} [get_ports { seg7[3]}] set_property -dict {PACKAGE_PIN A19 IOSTANDARD LVCMOS33} [get_ports { seg7[2]}] set_property -dict {PACKAGE_PIN E18 IOSTANDARD LVCMOS33} [get_ports { seg7[5]}] set_property -dict {PACKAGE_PIN C19 IOSTANDARD LVCMOS33} [get_ports { seg7[6]}] set_property -dict {PACKAGE_PIN B17 IOSTANDARD LVCMOS33} [get_ports { seg7[1]}] set_property -dict {PACKAGE_PIN C17 IOSTANDARD LVCMOS33} [get_ports { seg7[0]}] 6.尝试运行代码,先后运行“Run Synthesis”和“Run Implementation”,检查代码是否报错或者出现“Critical Warning”然后通过审视“Message”框进行调整与修改,直至没有报错,可成功运行为止。 7.点击“Generate Bitstream”生成最终的实验所需的.bit比特流文件,然后将其上传至在线实验平台,按照上面8421BCD码与7段数码管输入的对应关系进行测试,测试通过则实验结束。 四、实验的分析与思考 问题与原因: 1.实验所用软件的功能不熟悉,无法流畅的进行操作; 2.有些报错信息无法读懂,很难找到解决方式; 3.无法找到.bit文件位置。 解决方式: 1.博闻强识英语单词,仔细查阅实验指导书对于本软件的解释与说明; 2.反复确定代码书写是否有误,检查引脚与代码的对应关系,仔细查找.xdc文件中空格数目; 3.通过计算机的查找功能,直接搜索.bit,寻找此文件,并上传。 |
|||||||||||||||||||||||||||||||||||||||||