# LA500GM **Repository Path**: beamworld/la500-gm ## Basic Information - **Project Name**: LA500GM - **Description**: 本作品是于《全国大学生集成电路创新创业大赛》龙芯中科杯赛道,设计的一款基于LA500 CPU的国产化安全SoC芯片,内部集成SM2(ECC)公钥密码算法、SM3哈希密码算法、SM4对称密码算法、内部密钥表4个硬件加速IP,构建了密码算法硬件可信执行区域(Trust Zone),实现了高性能、低功耗的密码运算能力。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-19 - **Last Updated**: 2025-12-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于LA500的国产化安全SoC设计与应用 《第九届全国大学生集成电路创新创业大赛》——龙芯中科杯 —— **CICC-0900394** 队伍作品 ![contributor](https://img.shields.io/badge/contributor-XiaochenWang-blue) ![contributor](https://img.shields.io/badge/contributor-KaiZhao-1ff) ![contributor](https://img.shields.io/badge/contributor-BingnanYu-1ff) ![license](https://img.shields.io/badge/license-Apache-blueviolet) ![](https://img.shields.io/badge/%E8%8E%B7%E5%A5%96-%E4%B8%9C%E5%8C%97%E8%B5%9B%E5%8C%BA%E4%B8%80%E7%AD%89%E5%A5%96-449f71) ![](https://img.shields.io/badge/%E8%8E%B7%E5%A5%96-%E5%85%A8%E5%9B%BD%E6%80%BB%E5%86%B3%E8%B5%9B%E4%BA%8C%E7%AD%89%E5%A5%96-ff0071) ![Version](https://img.shields.io/badge/version-Ver3.1.2-002270) -------- - 支持SM2(ECC)签名(260次/秒)、验签(130次/秒)硬件加速; - 支持SM3(21Mbps)哈希硬件加速; - 支持SM4(43Mbps)加解密硬件加速; - 高性能和低功耗(0.495 W); - API支持同步和异步中断模式; - 支持密码算法内部可信执行; - 内部支持5对非对称密码、5个对称密钥存储; - 符合《GM/T 0028-2014密码模块安全技术要求》安全二级要求; ![](./image/架构框图.png) - FPGA平台: - 龙芯云:`Xilinx` `Artix-7` `xc7a200tfbg676-1` - 环境: - Vivado v2019.2 - ModelSim SE-64 10.5 2016.02 - WSL Ubuntu 22.04.5 LTS - Design Complier 2021.06-SP3 - Formality 2021.06-SP3 - Innovus V21.10-p004_1 - 工艺库: - TSMC 180nm ## 文件夹介绍 | 文件夹 | 用途 | | ------ | ---------------------------------------- | | fpga | FPGA工程、FPGA创建脚本、约束文件、CI脚本 | | image | 工程截图 | | rtl | 工程源码 | | script | 数值计算脚本 | | sdk | 软件开发工具链和程序源码 | | sim | testbench | > 子文件夹下的内容用途见各子文件夹中`Readme.md`文件。 ## 使用方法 ### Vivado 在vivado控制台中输入如下代码: ```bash # 创建SOC工程 cd d:/la32r_soc_ciciec/fpga source create_soc.tcl # 创建SM2工程 cd d:/la32r_soc_ciciec/fpga source create_sm2.tcl # 创建SM3工程 cd d:/la32r_soc_ciciec/fpga source create_sm3.tcl # 创建SM4工程 cd d:/la32r_soc_ciciec/fpga source create_sm4.tcl # 创建密钥表工程 cd d:/la32r_soc_ciciec/fpga source create_key.tcl ``` ### SDK 1. 安装WSL; 2. 执行如下指令; ```bash cd la32r_soc_ciciec/sdk/toolchains ./init.sh loongarch32r-linux-gnusf-gcc --version ``` 3. 安装`gcc`和`make`; 4. 编译对应程序; ## 编译指令 - `./rtl/config.h` ```verilog `define USE_FPGA //做ASIC时关闭此定义 `define USE_CRYPTO //关闭此定义不连接加密模块,为比赛标准赛题SOC,但有轻微改动 ``` - `./rtl/crypto/axi_crypto.v` ```verilog `define ENABLE_SOFTWARE_KEY_OUT //使能软件读取内部密钥 ``` ## 时钟树 ![](./image/时钟树.png) ## 地址分配 ### AXI Crossbar | 编号 | 从设备 | 基地址 | 宽度 | 大小 | 虚地址 | 协议 | | :--: | :-----: | :--------: | :---: | :--: | :--------: | :-------: | | 0 | SRAM | 0x1c000000 | 23bit | 8Mb | 0xbc000000 | AXI4 | | 1 | UART | 0x1f000000 | 20bit | 1Mb | 0xbf000000 | AXI4/AXI3 | | 2 | Crypto | 0x1f100000 | 20bit | 1Mb | 0xbf100000 | AXI4/AXI3 | | 3 | confreg | 0x1f200000 | 20bit | 1Mb | 0xbf200000 | AXI4/AXI3 | ### Crypto | 编号 | 从设备 | 基地址 | 宽度 | 大小 | 虚地址 | | :--: | :-------: | :--------: | :--: | :--: | :--------: | | 0 | SM4 | 0x1f100000 | 8bit | 2Kb | 0xbf100000 | | 1 | SM3 | 0x1f100100 | 8bit | 2Kb | 0xbf100100 | | 2 | SM2 | 0x1f100200 | 9bit | 4Kb | 0xbf100200 | | 3 | key_table | 0x1f100400 | 8bit | 1Kb | 0xbf100400 | ## 资源耗费 ### FPGA | 包含IP | LUT | LUTRAM | FF | BRAM | DSP | BUFG | PLL | | --------- | ----- | ------ | ----- | ---- | ---- | ---- | ---- | | 基础CPU | 10171 | 468 | 6709 | 10 | 0 | 1 | 1 | | SM4 | 6489 | 0 | 5445 | 0 | 0 | 1 | 0 | | SM3 | 1104 | 32 | 1302 | 0 | 0 | 1 | 0 | | SM2 | 26755 | 0 | 4429 | 0 | 15 | 1 | 0 | | key_table | 2479 | 0 | 5901 | 0 | 0 | 1 | 0 | | 安全SoC | 47598 | 476 | 25818 | 10 | 15 | 6 | 1 | > 基础CPU表示LA500,安全SoC=基础CPU+SM4+SM3+SM2+key_table。 ## 性能 | 功能 | 时钟频率 | 所需时钟 | 每秒次数 | 每次位数 | 吞吐率 | | :-------: | :------: | :------: | :------: | :------: | :----: | | SM2签名 | 20Mhz | 74634 | 260 | - | - | | SM2验签 | 20Mhz | 149785 | 130 | - | - | | SM3哈希 | 50Mhz | 71 | 704000 | 32 | 21Mbps | | SM4加解密 | 50Mhz | 140 | 357000 | 128 | 43Mbps | ## 功耗 ![](./image/Power.png)