
数字IC设计-FPGA
文章平均质量分 89
摆渡沧桑
芯片算法架构师
算法设计/硬件设计/公钥密码/对称密码/抗量子前沿密码(抗攻击/同态/格密码)
展开
-
AHB2APB桥接器设计(2)——同步桥设计的介绍
可以分为三个部分来分析整个同步桥的设计:主要功能将左边AHB的信号转换为APB的信号,同步桥只有一个时钟和复位,信号转换主要由一些组合逻辑来实现 1. 第一部分: 主要有HCLK,HRESETn, PCLKEN, APBACTIVE这些时钟、复位控制信号 2. 第二部分: 主要以H开头的信号,主要是AHB BUS上的信号 3. 第三部分: 主要以P开头的信号,主要是APB BSU上的信号...原创 2022-06-08 08:30:00 · 3690 阅读 · 2 评论 -
基于Montgomery算法的高速、可配置RSA密码IP核硬件设计系列博文
基于Montgomery算法的高速、可配置RSA密码IP核硬件设计系列文章分享原创声明:本系列所有的博文都是本人参考相关的文献资料后,独立撰写,组织语言后,编写本系列博文,如需转载,请注明转载出处;本系列主要基于FPGA进行相关的硬件设计,也可以采用ASIC,对于硬件初学者来说,是一个很值得学习的地方,包括第八部分相关的加法器的实现,一些算法的硬件实现,一些密码学的相关知识,相关的软件的使用,如Verilog,Python等,以及一些随机数的产生,抵抗侧信道攻击的算法等。基于Montgomery算法的原创 2021-02-27 21:38:42 · 3094 阅读 · 3 评论 -
数字IC设计——FIR滤波器(二)(低通FIR滤波器的Verilog实现)
数字IC设计——低通FIR滤波器的Verilog实现(一)用Verilog实现一个3-tap低通FIR滤波器,输入输出为8bit无符号数,滤波器系数[1/4 1/2 1/4]module fir_lpf_3tap (input clk,input rst_n,input [7:0] din,output [7:0] dout);…endmodule这里3-Tap就是2阶滤波器。...原创 2019-12-03 20:20:41 · 9059 阅读 · 0 评论 -
数字IC设计 FPGA——再谈乘法器设计(使用Verilog 原语 LUT 进行四位乘法器设计)
数字IC设计 FPGA——再谈乘法器设计(使用Verilog 原语 LUT 进行四位乘法器设计)乘法器同加法器一样,在数字信号的各种算法中被频繁的使用,并且对于整个系统的速度的影响是很大的。那么如何实现快速高效的乘法器关系着整个系统的运算速度和资源效率最大化的利用。乘法操作分为有符号操作和无符号操作两大类,无符号操作相对于一、乘法器架构1. 乘法器2. 乘法器结构二、乘法器的 Verilog 原语设计2. Verilog代码3. RTL结构图4. 仿真结果如下:5. 综合之后资源的利用原创 2019-11-06 17:30:44 · 11200 阅读 · 3 评论 -
数字IC设计 FPGA——再谈加法器设计(使用Verilog 原语 进行四位加法器设计)
数字IC设计 FPGA——再谈加法器设计(使用Verilog 原语 进行四位加法器设计)前面介绍了关于xilinx FPGA CLB的基本原理和结构,以及如何使用原语进行设计一、基于LUT3的四位加法器设计对于generate语句块,这是Verilog 2001语法中新增的语法,但需要注意generate-for语句:二、基于LUT5的四位加法器设计利用LUT3设计四位加法器的资源利用及延迟情况对于上面利用LUT3来设计加法器的情况,无论是资源使用情况还是延迟都两级形成四位全加器的资源利用和延迟原创 2019-11-02 11:19:41 · 9061 阅读 · 0 评论 -
浅谈XILINX FPGA CLB单元 汇总 (CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic))
浅谈XILINX FPGA CLB单元 ()一、概述1)一个CLB 等于2个Slice2)一个Slice等于4个6输入LUT+8个触发器(flip-flop)+算数运算逻辑二、CLB的介绍2. CLB结构组成三、CLB的各部分详细结构ASMBL体系结构CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic)原创 2019-10-31 20:00:58 · 15016 阅读 · 2 评论 -
浅谈XILINX FPGA CLB单元 之 分布式RAM (Distributed RAM Available in SLICEM Only、RAM128X1D、Verilog原语描述)
一、分布式RAM(Distributed RAM)SLICEM中的函数发生器添加一个据输入端口和使能就将 其拓展成一个分布式 RAM。分布式 。分布式 RAM的资源可以在 SLICE中配置, 中配置。RAM的主要特点。二、SLICEM中配置RAM元素可实现以下配置,使用分布式RAM需要注意的地方,分布式RAM配置包括:三、以RAM128X1D 为例(128位的 1位输出的随机存储器)三、Xilinx 官方 Vivado中RAM128X1D的原语(primitive)描述Verilog 中 关键部分原创 2019-10-30 13:17:03 · 6903 阅读 · 4 评论 -
浅谈XILINX FPGA CLB单元 之 移位寄存器(移位寄存器、SRLC32E、SRL16E)
浅谈XILINX FPGA CLB单元 之 移位寄存器(移位寄存器、SRL32)一、移位寄存器1. SLICEM函数发生器也可以配置为32位移位寄存器2. 移入D(DI1 LUT引脚)和移出Q31(MC31 LUT引脚)线路将LUT级联 二、 移位寄存器的功能与应用 三、XILINX FPGA 中LUT 中移位寄存器的复用情况一个LUT可以用于产生2个16bit移位寄存器,地址是复用的利用SRL32 组成 64/96/128 bit的移位寄存器,利用四、移位寄存器数据流原创 2019-10-29 10:24:30 · 11755 阅读 · 2 评论 -
浅谈XILINX FPGA CLB单元 之 进位逻辑链(CARRY4原理分析,超前快速进位逻辑结构)
浅谈XILINX FPGA CLB单元 之 进位逻辑链(CARRY4原理分析,超前快速进位逻辑结构)一、可配置逻辑块(Configurable Logic Block, CLB)简介CLB可配置逻辑块是指实现各种逻辑功能的电路,是xilinx基本逻辑单元。其中包含4个6输入LUT、进位链、多路复用器和8个寄存器 二、进位逻辑链CARRY4模块三、CARRY4结构能实现快速超前加法的原理1. CARRY4的原理过程:1)端口S[3:0]是要求数据的异或输入;2)端口DI[3:0]是数据的输入原创 2019-10-24 15:57:52 · 16188 阅读 · 4 评论 -
数字IC设计——SRAM的Verilog语言实现(三)(双端口SRAM)
数字IC设计——SRAM的Verilog语言实现(三)(双端口SRAM)在FPGA设计中,经常会用到RAM。1)用Verilog实现一个同步双端口sram,深度16,位宽8bit。A口读出,B口写入。支持片选,读写请求,要求代码可综合。2)用Verilog实现一个异步双端口sram,深度16,位宽8bit。A口读出,B口写入。支持片选,读写请求,要求代码可综合。3)用Verilog实现一个同步双端口sram,深度16,位宽8bit。A口可读可写,B口可读可写。支持片选,读写请求,要求代码可综合。原创 2019-10-23 16:09:43 · 20665 阅读 · 19 评论 -
数字IC设计——数组、存储器(Memory)的定义及Verilog语言实现(二)(存储器的读、取、及初始化赋值)
数字IC设计——SRAM的Verilog语言实现(二)(SRAM)在介绍SRAM的Verilog定义之前先介绍一下,Verilog关于数组的定义。Verilog中提供了两维数组来帮助我们建立内存的行为模型。如果要存储一个值到某个单元中去, 而如果要从某个单元读出值内存的初始化定义内存的初始化例子二、存储器在Verilog中的定义寄存器数组和寄存器的赋值为存储器赋值的另一种方法是使用系统任务转载 2019-10-17 21:42:13 · 28025 阅读 · 4 评论 -
数字IC设计——SRAM的Verilog语言实现(一)(单端口SRAM)
数字IC设计——SRAM的Verilog语言实现(一)(SRAM)一、用verilog实现一个深度为16,位宽8bit的单端口SRAM。搭建一个仿真环境,完成初始化,读取,写入的操作。存储器SRAM在Verilog中的定义3. 代码分析及注意事项引导语句“// synopsys translate_off原创 2019-10-14 23:08:50 · 27033 阅读 · 13 评论 -
数字IC设计——乘法器设计(三)(用Verilog实现两路数据的乘法运算,要求只使用1个乘法器)
数字电路基础知识——乘法器设计(三)用Verilog实现两路数据的乘法运算,要求只使用1个乘法器。module multiply( input clk, input rst_n, input sel_x, input [7:0] da_x, input [7:0] da_y, input [7:0] db_x, input [7:...原创 2019-10-08 21:51:32 · 2766 阅读 · 0 评论 -
数字IC设计——用Verilog实现序列检测器(有限状态机FSM)
数字IC设计-FPGA——用Verilog实现序列检测器(有限状态机)序列检测器:有“101”序列输入时输出为1,其他输入情况下,输出为0。画出状态转移图,并用Verilog描述。“101” 序列检测器序列检测器在数据通讯,雷达和遥测等领域中用与检测步识别标志。它是一种用来检测一组或多组序列信号的电路。例如检测器收到一组串行码{1110010}后,输出标志1,否则,输出0。二、“10101” 序列检测器三、序列检测器设计的思路步骤原创 2019-10-07 16:05:42 · 42587 阅读 · 7 评论 -
数字IC设计——用Verilog实现串并转换(移位寄存器)
数字IC设计-FPGA——用Verilog实现串并转换一、串转并转换模块1. 利用移位寄存器 2. 利用计数器input clk, rst_n, data_i;output [7:0] data_o;module Deserialize(input clk,input rst_n,input data_i,output reg [7:0] data_o);二、并转串转换模块原创 2019-10-05 20:11:02 · 18180 阅读 · 6 评论 -
数字电路基础知识——组合逻辑电路(译码器的设计、BCD译码器、3-8译码器)
数字电路基础知识——组合逻辑电路(译码器、数据选择器)数字电路中有很多基本常用的组合逻辑电路,如编码器、译码器、数据选择器、加法器、比较器。本次主要介绍译码器、数据选择器。并用Verilog语言设计简单的组合逻辑电路。一、译码器使用Verilog语言设计一个简单的组合逻辑电路(2-4译码器)设计BCD译码器,输入0~9。采用Verilog描述并画出门级电路图。(4线-10线译码器)原创 2019-09-07 15:44:07 · 11248 阅读 · 0 评论 -
FPGA基础入门篇(九)使用 Verilog 实现 LED 呼吸灯效果
FPGA基础入门篇(九)使用 Verilog 实现 LED 呼吸灯效果呼吸灯为常见的数字IC设计案例,也比较简单,主要是关于呼吸灯的原理需要理解。常见的应用在手机的呼吸灯,这里我们采用硬件描述语言来实现LED呼吸灯的效果,即在1s内,LED灯由暗逐渐变亮,再1s内再由亮逐渐变暗。一、设计原理呼吸灯设计原理归结为对于分频和占空比的应用,就是先分频,然后再设置占空比的设计。占空比也就是控制LED...原创 2019-08-17 17:32:56 · 12143 阅读 · 2 评论 -
Xilinx软件使用问题——SDK terminal 打印出现乱码问题解决
Xilinx软件使用问题——SDK terminal 打印出现乱码问题解决Xilinx的软件使用起来比较头疼经常会有出现问题,却很难解决的问题。如在Vivado的BD设计中,当我们第一次launch SDK时会有hw_platform0的工程文件,当我们再次修改Vivado BD设计的时候再次打开SDK,会有一个platform1的文件,此时需要删除之前的文件,保留最新的修改过后的plat...原创 2019-08-13 10:38:15 · 11123 阅读 · 7 评论 -
FPGA基础入门篇(八) Vivado封装自定义IP及调用
FPGA基础入门篇(八) Vivado封装自定义IP及调用在FPGA实际的开发中,官方提供的IP并不是适用于所有的情况,需要根据实际修改,或者是在自己设计的IP时,需要再次调用时,我们可以将之前的设计封装成自定义IP,然后在之后的设计中继续使用此IP。因此本次详细介绍使用VIvado来封装自己的IP,并使用IP创建工程。一、IP的创建首先新建工程。如前面部分介绍的工程创建,完成代码的设...原创 2019-07-29 20:45:49 · 24039 阅读 · 1 评论 -
FPGA基础入门篇(七) 多路分频器的实现——任意整数分频器(二)
FPGA基础入门篇(七) 多路分频器的实现——任意整数分频器(二)本次介绍分频的主要设计方法,如得到任意整数的分频器该怎么设计。前面介绍了2、3、4、8分频的设计方法。其实本质是利用计数器对时钟上升沿进行计数的基本操作。所以简单的解决办法就是产生计数器,然后对计数进行高低电平处理。一、2的幂次方分频二、奇数分频原创 2019-07-21 19:52:42 · 2726 阅读 · 0 评论 -
FPGA基础入门篇(七) 多路分频器的实现(一)
FPGA基础入门篇(七) 多路分频器的实现(一)FPGA基础入门篇(七) 多路分频器的实现(一)本次实验实现多路分频器的设计,包括2分频、3分频、4分频、8分频,及2Hz的信号的实现。时钟采用100Mhz的系统系统时钟。并实现仿真测试。最后采用##### 一、设计思路FPGA的时钟采用100MHz,通过分频,设计如下的系统。然后通过chipscope在线调试分频的结果, 通过板子上的LED灯来显示2Hz的信号的时钟。二、vivado的三种仿真测试,包括行为级仿真,综合后时序仿真,以及编译后时序仿原创 2019-07-21 19:51:41 · 6005 阅读 · 1 评论 -
FPGA基础入门篇(六) 按键防抖电路实现(三)
FPGA基础入门篇(六) 按键防抖电路实现(三)本节继续介绍关于按键防抖的电路介绍,电路的防抖其实是加一个延时模块。本节将简化程序的设计,并且介绍在线逻辑分析仪仿真,debug的方法。一、Verilog参数传递verilog可以使用# 进行参数的传递二、设计思路三、设计代码四、Chipscope 在线逻辑分析仪仿真debug信号:格式:(*mark_debug = "true"*) 信号名,用于后面在线debug信号。原创 2019-07-19 22:54:51 · 4750 阅读 · 0 评论 -
FPGA基础入门篇(六) 按键防抖电路实现(一)
FPGA基础入门篇(五) 按键防抖电路实现本次实验的按键消抖电路实现用Zynq 7000 系列的FPGA实现,时钟频率为500MHz, 按键消抖延时为20ms。此次电路的实现涉及到如下过程:1. 按键作为异步信号输入,需要进行同步处理。可以采用两级以上的异步复位,同步释放的dff进行时钟同步处理。(异步复位,同步释放,可利用**多级边沿检测电路**)2. 根据抖动时间和时钟周期,确定计数器位宽:20ms。原创 2019-07-18 23:34:23 · 8457 阅读 · 0 评论 -
FPGA基础入门篇(六) 按键防抖电路实现(二)
上章介绍了按键防抖电路的实现。上节介绍了按键防抖电路的实现。这节用上节用按键去抖模块来控制LED等亮灭。不使用按键去抖模块:key按键防抖模块与led模块连接在一起,创建一个顶层文件:原创 2019-07-16 18:08:50 · 2117 阅读 · 0 评论 -
FPGA基础入门篇(五) 八位全加器的实现,用时钟控制进位(触发器)
FPGA基础入门篇(六) 八位全加器的实现实现八位全加其实很简单,是组合逻辑电路,不必使用时钟。但本次按照如下的要求来实现要求:用D触发器控制进位,并且用一位全加器来设计八位全加器。原创 2019-06-12 16:46:57 · 6258 阅读 · 3 评论 -
FPGA基础入门篇(四) 边沿检测电路
FPGA基础入门篇(四)——边沿检测电路边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测。在检测到所需要的边沿后产生一个高电平的脉冲。这在FPGA电路设计中相当的广泛。原创 2019-06-03 19:17:55 · 15236 阅读 · 5 评论 -
FPGA基础入门篇(三) 程序的固化和下载
FPGA基础入门篇(三)——程序的固化和下载本系列博客采用ZYNQ 7000系列的开发板。本章也可只使用其他开发板,后续主要以ZYNQ嵌入式SOC学习为主。FPGA程序的固化和下载基于上次的流水灯实验进行固化和下载。一、原理图:固化流程固化准备二、 BOOT.bin制作过程创建工程打开之前的已经写好并且编译下载好的流水灯工程在此基础上添加 Block Design.按如下操作:输入ZYNQ并回车找到...原创 2019-05-31 17:06:52 · 5757 阅读 · 1 评论 -
FPGA基础入门篇(二) 流水灯(从创建工程到开发板测试)
FPGA基础入门篇(二)——流水灯(从创建工程到开发板测试)本系列博客采用ZYNQ 7000系列的开发板。本章也可只使用其他开发板,后续主要以ZYNQ嵌入式SOC学习为主。一、开发板资料相关介绍开发板的相关硬件原理图:开发板提供四个用户按键,按键原理图:相关按键的管脚:开发板提供五个LED灯,LED原理图:相关LED管脚定义:二、 创建Vivado工程启动vivado软件,并创建新建工程创建名为 flow_led工程名,并...原创 2019-05-31 00:13:20 · 2386 阅读 · 0 评论 -
FPGA基础入门篇(一) Test bench 仿真文件编写方法
编写testbench的主要目的是为了对使用的硬件描述语言设计的电路进行仿真验证。本系列的博客都是基于vivado 2017.4 Xilinx验证平台。采用的开发板为ZYNQ-7000系列的器件。原创 2019-05-25 20:46:28 · 21886 阅读 · 5 评论