FPGA开发板实现VHDL数码管动态显示实验

版权申诉
0 下载量 187 浏览量 更新于2024-10-10 收藏 365KB RAR 举报
资源摘要信息: "本资源为关于FPGA开发板的实验教程,名为‘seg.rar_VHDL数码管实验_fpga 开发板’,内容涵盖如何使用VHDL语言进行数码管的动态显示实验。该实验教程附带在大西瓜FPGA开发板的陪赠资料中,是基础到进阶学习路径中的一个重要环节。教程不仅详细介绍了实验的步骤和方法,而且还将重点放在了数码管显示技术的基础知识与实际应用上。 通过该教程,读者可以学习到如何利用Verilog硬件描述语言在FPGA(现场可编程门阵列)开发板上编写程序,以及如何实现数码管的动态显示。动态显示是一种通过快速切换显示内容,利用人眼的视觉暂留效应来模拟连续显示的技术,它在数码管显示中应用广泛。 实验的步骤一般包括:首先,了解数码管的基本工作原理和结构;其次,学习如何使用VHDL进行代码编写,以控制数码管的各个段;再者,掌握动态扫描显示的原理和方法;最后,将编写好的VHDL代码下载到FPGA开发板上,进行调试和测试,确保数码管可以正确地以动态方式显示预期的数字或者字符。 此外,实验还将涉及到数字系统设计的其他相关知识点,如时序控制、状态机设计等,这些都是数字电路设计中的核心概念。掌握这些技能对于未来的FPGA开发至关重要。 标签“vhdl数码管实验”与“fpga_开发板”明确指出了本资源的主要内容和用途,前者强调了使用VHDL语言进行数码管实验的侧重点,而后者则表明了该实验与FPGA开发板紧密相关。通过这两大主题的结合,资源旨在帮助学习者在FPGA领域进行深入探索和实践。 文件名称列表中的‘数码管的动态显示’,暗示了教程的核心内容,即如何实现数码管的动态显示。动态显示技术在各种电子显示设备中都有应用,从简单的计数器到复杂的多层信息显示系统,都离不开这一技术。通过本教程的学习,用户将能够理解并掌握这一技术,为以后的电子设计工作奠定坚实的基础。" 总结来说,本资源是一份专门为FPGA开发板用户设计的实验教程,重点在于如何使用VHDL语言来实现数码管的动态显示。通过本教程的学习,用户将能够理解数码管的工作原理、掌握动态显示技术,并具备在FPGA开发板上进行相关编程和调试的能力。标签和文件名清晰地指出了教程的主要内容和学习目标,为学习者提供了明确的学习路径和实践方向。

给出相同功能的代码import os import numpy as np import nibabel as nib import imageio from PIL import Image def read_niifile(niifilepath): # 读取niifile文件 img = nib.load(niifilepath) # 提取niifile文件 img_fdata = img.get_fdata(dtype='float32') return img_fdata def save_fig(niifilepath, savepath, num, name): # 保存为图片 name = name.split('-')[1] filepath_seg = niifilepath + "segmentation\" + "segmentation-" + name filepath_vol = niifilepath + "volume\" + "volume-" + name savepath_seg = savepath + "segmentation\" savepath_vol = savepath + "volume\" if not os.path.exists(savepath_seg): os.makedirs(savepath_seg) if not os.path.exists(savepath_vol): os.makedirs(savepath_vol) fdata_vol = read_niifile(filepath_vol) fdata_seg = read_niifile(filepath_seg) (x, y, z) = fdata_seg.shape total = x * y for k in range(z): silce_seg = fdata_seg[:, :, k] if silce_seg.max() == 0: continue else: silce_seg = (silce_seg - silce_seg.min()) / (silce_seg.max() - silce_seg.min()) * 255 silce_seg = np.uint8(Image.fromarray(silce_seg).convert('L')) silce_seg = cv2.threshold(silce_seg, 1, 255, cv2.THRESH_BINARY)[1] if (np.sum(silce_seg == 255) / total) > 0.015: silce_vol = fdata_vol[:, :, k] silce_vol = (silce_vol - silce_vol.min()) / (silce_vol.max() - silce_vol.min()) * 255 silce_vol = np.uint8(Image.fromarray(silce_vol).convert('L')) imageio.imwrite(os.path.join(savepath_seg, '{}.png'.format(num)), silce_seg) imageio.imwrite(os.path.join(savepath_vol, '{}.png'.format(num)), silce_vol) num += 1 return num if name == 'main': path = r'C:\Users\Administrator\Desktop\LiTS2017' savepath = r'C:\Users\Administrator\Desktop\2D-LiTS2017' filenames = os.listdir(path + "segmentation") num = 0 for filename in filenames: num = save_fig(path, savepath, num, filename) 。用另一段代码实现相同功能

2023-05-25 上传

import os import numpy as np import nibabel as nib import imageio import cv2 def read_niifile(niifilepath): # 读取niifile文件 img = nib.load(niifilepath) # 提取niifile文件 img_fdata = img.get_fdata(dtype='float32') return img_fdata def save_fig(niifilepath, savepath, num, name): # 保存为图片 name = name.split('-')[1] filepath_seg = niifilepath + "segmentation" + "segmentation-" + name filepath_vol = niifilepath + "volume" + "volume-" + name savepath_seg = savepath + "segmentation" savepath_vol = savepath + "volume" if not os.path.exists(savepath_seg): os.makedirs(savepath_seg) if not os.path.exists(savepath_vol): os.makedirs(savepath_vol) fdata_vol = read_niifile(filepath_vol) fdata_seg = read_niifile(filepath_seg) (x, y, z) = fdata_seg.shape total = x * y for k in range(z): silce_seg = fdata_seg[:, :, k] # 三个位置表示三个不同角度的切片 if silce_seg.max() == 0: continue else: silce_seg = (silce_seg - silce_seg.min()) / (silce_seg.max() - silce_seg.min()) * 255 silce_seg = cv2.threshold(silce_seg, 1, 255, cv2.THRESH_BINARY)[1] if (np.sum(silce_seg == 255) / total) > 0.015: silce_vol = fdata_vol[:, :, k] silce_vol = (silce_vol - silce_vol.min()) / (silce_vol.max() - silce_vol.min()) * 255 imageio.imwrite(os.path.join(savepath_seg, '{}.png'.format(num)), silce_seg) imageio.imwrite(os.path.join(savepath_vol, '{}.png'.format(num)), silce_vol) num += 1 # 将切片信息保存为png格式 return num if name == 'main': path = r"C:\Users\Administrator\Desktop\LiTS2017" savepath = r"C:\Users\Administrator\Desktop\2D-LiTS2017" filenames = os.listdir(path + "segmentation") num = 0 for filename in filenames: num = save_fig(path, savepath, num, filename) 将代码中的 使用cv2模块的代码替换掉,给出一整段完整代码,实现相同功能

2023-05-25 上传