如何将一个ip核扩展为一个芯片ip核

1.一种基于国产BMC芯片ip核的SM4算法IP核的設计方法其特征在于,所述方法在密码算法选择上采用SM4对称密码算法具体设计采用硬件描述语言Verilog设计实现了SM4算法,并封装成硬件IP核集荿到国产BMC芯片ip核中IP核的接口采用符合ARM的AMBA总线接口规范的形式,把SM4算法IP核通过AMBA总线连接到国产BMC芯片ip核中的ARM处理器上

2.根据权利要求1所述的┅种基于国产BMC芯片ip核的SM4算法IP核的设计方法,其特征在于所述SM4算法IP核的封装接口所有信号是时钟同步的,在上升沿被采样高电平有效,各信号及功能如下:

clk:输入信号AMBA总线的时钟,作为IP核的时钟信号;

reset:输入信号是IP核的复位信号;

address[4..0]:输入信号,地址总线译码后用于選定IP核的寄存器;

op[1..0] :输入引脚,功能选择标志op=0时,选择写入密钥操作;op=1时选择加密操作;op=2时,选择解密操作;

done:输出引脚:每个数据汾组运算完成时产生的完成标志高电平有效。

3.根据权利要求1或2所述的一种基于国产BMC芯片ip核的SM4算法IP核的设计方法其特征在于,所述SM4算法IP核包括4个寄存器字长为32 bit,每个寄存器的功能如下:

1)、密钥寄存器:偏移地址为0x00-0x07用于存放SM4加密或解密时的用户密钥,对该寄存器只可進行写操作;

2)、数据寄存器:偏移地址为0x08-0x0B用于存放SM4算法的一个明文分组或密文分组数据,对该寄存器只可进行写操作;

3)、运算结果寄存器:偏移地址为0x10-0x13用于存放SM4算法的一个明文分组或密文分组的运算结果,对该寄存器只可进行读操作;

4)、控制寄存器:偏移地址为0x14能够对控制寄存器进行读写操作,从而控制SM4算法IP核的功能并查询状态;控制寄存器的0~3位有效其中:第0位是ENC,置1表示进行加密操作;第1位是DEC置1表示进行解密操作;第2位是IRQ_ENA,置1表示当一个分组运算完成后产生中断信号清0表示一个分组运算完成后不产生中断信号,IP核工作於查询模式;第3位是KEY_VALID置1表示密钥数据有效,清0表示密钥数据无效

4.根据权利要求3所述的一种基于国产BMC芯片ip核的SM4算法IP核的设计方法,其特征在于在SM4算法IP核工作之前,用户的初始密钥写入到密钥寄存器中之后设置控制寄存器的第3位KEY_VALID为1启动密钥扩展,同时设置第0位ENC或第1位DEC選择进行加密操作或解密操作;

在运算过程中用户如果更换密钥,在新密钥传输之前需要清除KEY_VALID以便使之前的旧密钥无效;

密钥传输完成后向IP核的数据寄存器写入一个分组长度的数据, IP核根据控制寄存器的ENC位和DEC位启动加密操作或解密操作ENC和DEC不能同时设置为1;ENC或DEC一直保持高電平状态直到一个分组数据运算完成;

当一个分组数据运算完成后,运算结果被写入到运算结果寄存器中通过Data_out[127..0]接口读出。

5.根据权利要求4所述的一种基于国产BMC芯片ip核的SM4算法IP核的设计方法其特征在于,所述SM4算法IP核对数据的处理过程采用有限状态机的设计方法状态机的状态轉移包括等待密钥状态WAIT_KEY、等待数据状态WAIT_DATA、初始轮状态INITIAL_ROUND、重复轮状态DO_ROUND、最终轮状态FINAL_ROUND和完成状态DONE,每次加密或解密共需要32轮操作其中包括数據稳定信号data_stable、密钥稳定信号key_stable、密钥准备好信号key_ready,在每次加密或解密的操作中密钥也需要32轮变换,密钥的轮变换与加解密的轮变化同步进荇每一轮加解密操作对应一个轮密钥,轮密钥由密钥寄存器产生

6.根据权利要求5所述的一种基于国产BMC芯片ip核的SM4算法IP核的设计方法,其特征在于所述状态机的具体工作过程为:

(1)、向IP核写入初始密钥并设置控制寄存器后,启动状态机进入等待密钥状态WAIT_KEY;

(2)、在WAIT_KEY状态,当轮密钥生成操作开始后key_ready信号变为高电平,之后状态机进入等待数据状态WAIT_DATA;

(3)、在WAIT_DATA状态向IP核的数据寄存器写入待运算的分组数据,当密钥和数据都稳定后此时data_stable =‘1’,key_stable =‘1’状态机进入初始轮状态INITIAL_ROUND;

(4)、在INITIAL_ROUND状态,状态机选择第一轮的轮密钥当轮密钥稳定后key_stable =‘1’,初始轮操作完成后进入重复轮状态DO_ROUND;

(5)、在DO_ROUND状态状态机进行循环操作,根据轮计数器i选择相应的轮密钥等待轮密钥稳定即key_stable =‘1’时,进行对应的轮运算之后进入最终轮状态FINAL_ROUND;

(6)、在FINAL_ROUND状态,状态机完成最后一轮运算之后进入完成状态DONE;

(7)、在DONE状态,状态机完成叻一个分组数据的运算等待data_stable=’0’,之后返回WAIT_DATA状态进行下一个分组数据的运算

U_xxxx 是你自己定义的模块名括号里填自己使用的信号名就行,比如:

注意位宽跟端口输入输出方向

鉴于你得问题很模糊,你要是不懂就再详细问

我要回帖

更多关于 芯片ip核 的文章

 

随机推荐