基于LX9构建文件保密系统
因工作较忙,调试时间不是很长,试用报告可能有不够详尽的地方,非常抱歉,也请多多包涵~。
本次试用主要是了解LX9设计情况,并尝试将LX9构建成一个文件加解密设备,通过串口(原拟用网口,但因时间关系,选用了较简单的串口)完成文件的加解密:加密时,明文和密钥由计算机送给LX9,LX9送密文给计算机;解密时,密文和密钥由计算机送给LX9,LX9将明文送回电脑。
为了简单起见,LX9所谓的加解密只准备进行与固定数据0xEE的异或操作,暂不实现密钥的传递过程。
这次试用尽量实现已有资源,硬件平台以AVS6LX9MBHP311_XPS_13_2_01为基础进行精简,去除不需要的模块。用XPS打开AVS6LX9MBHP311_XPS_13_2_01工程,查看原始模块,如下图所示。
1)去除不需要的模块,如Ethernet_MAC,DIP_Switches_4bit,SPI_FLASH,axi_timer_0等,保留LEDs_4Bits作为状态显示备用灯,最终模块结构如下图所示。
2)修改约束文件,打开system.ucf文件,如下图所示:
删除其中5~26行、32~37行,53~56行,即删除不用模块的约束信息。
3)生成需要的网表和bit文件。选择HARDWARE菜单,执行clean hardware命令。选择HARDWARE菜单,执行generate netlist命令,xps开始产生网表文件,不过产生过程中出现如下错误:
在C盘建立TEMP文件夹,重新执行generate netlist命令。漫长的等待。。。。。。后产生netlist完毕,执行hardware菜单generate bitstream命令,继续等待。。。。。。。产生bitstream完毕。
至此简单的硬件平台准备完毕,选择菜单project,执行export hardware design to SDK,点击export&launch SDK,导出硬件信息,开始进行软件设计。
Xps sdk软件初始界面如图所示。
选择菜单file—new—Xilinx C project,建立新的软件工程,设置如下图所示。
点击finish,建立软件工程。
注意上面使用Hello world 模板,可以方便测试整个平台是否正常工作。
设置串口调试助手,如下图所示。
端口号的选择在设备管理器里面查看Silinon Labs CP210X USB TO UART Bridge对应的数字,波特率与XPS 中 USB_UART中的设置对应。
执行generate linker script,方法如下图。
具体设置如图所示,设置完成后点击generate即可。
执行xilinx tools 菜单下Program FPGA 命令,设置如下所示。
FPGA编程完成后,内部程序自动执行,串口调试助手显示出hello world,说明平台工作正常。
修改helloworld.c,使其满足设计要求。修改过程简述如下:
加入引用头文件:
#include "xparameters.h"
#include "xuartlite.h"
#include "xgpio.h"
定义变量:
XUartLite ptrUart;
u8 ibuff[10];
u8 obuff[10];
XGpio ptrGpio;
u32 loop_cnt;
init_platform()下一行加入如下程序语句:
XUartLite_Initialize(&ptrUart, XPAR_USB_UART_DEVICE_ID);
XUartLite_ResetFifos(&ptrUart);
XGpio_Initialize(&ptrGpio,XPAR_LEDS_4BITS_DEVICE_ID);
XGpio_SetDataDirection (&ptrGpio,1,0);
loop_cnt = 0;
while(1)
{
loop_cnt ++ ;
loop_cnt = loop_cnt%0x3FFFF;
if(XUartLite_Recv(&ptrUart,ibuff,1)==1)
{
obuff[0] = ibuff[0] ^ 0xee;
XUartLite_Send(&ptrUart,obuff,1);
}
if(loop_cnt>0x20000)
{
XGpio_DiscreteClear(&ptrGpio,1,0x1);
}else{
XGpio_DiscreteSet(&ptrGpio,1,0x1);
}
}
修改完成后保存文件,xps SDK自动编译。
右键点击encrypt项目,修改编译配置为release版本,如下图所示。重新编译,生成release版本的encrypt.elf程序。
本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念
本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“
课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了
@2003-2020 中国电子顶级开发网