
芯片
luoganttcc
微信:luogantt2
展开
-
FPGA有哪些优质的带源码的IP开源网站
Opencores的IP核心包括处理器、总线接口、视频、音频和其他数字电路组件,这些核心都是由社区的成员设计和共享的。总的来说,Jan Gray 的 RISC CPU 网站是一个对于任何想要学习 FPGA-based CPU 设计和实现的人来说都是一个有价值的资源,也是一个寻找可用于自己项目的开源 RISC CPU 核心的硬件设计师的宝贵资料。上面就是整个网站上的内容(翻译过的,原英文网站),不能用丰富形容,简直是太丰富,常用的接口,简单的项目(很具有代表性的项目),不说什么了,赶快去试一试吧。原创 2024-12-15 12:24:56 · 1616 阅读 · 0 评论 -
优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V
在软件方面,PicoRio设计了一个整体软件架构,具有丰富的操作系统环境以及其他程序的支持,因此拥有一个强大的软件生态。在去年推出了音视频AI专用的K210,中科蓝讯推出了一系列基于RISC-V架构的蓝牙芯片,出货量极大,其宣称是全球首家RISC-V应用量过亿(颗)的公司,而且全部搭载国产开源RT-Thread物联网操作系统。"RISC-V是开源的"表示指令集规范是开源、开放和免费的(open and free),这与x86与ARM指令集有本质不同,但并不是指具体的处理器实现也都是开源免费的。原创 2024-12-15 12:14:50 · 2159 阅读 · 0 评论 -
再谈AI软件栈
未来三年之内,哪怕是背靠国产化大势的国内AI新硬件公司会发生大规模的洗牌应该也不会意外才对) 按这个标准,市面上所有的AI新硬件公司的软件栈恐怕都还有不小的距离。”,是因为在SASS里可能也是存在leaky abstraction的情况的(比如SASS对一些新的硬件功能提供的抽象不够友好),只不过遇到这种leaky abstraction,因为已经不存在其他的旁路路径,SASS作为ISA层,是距离硬件最近的层次,所以只能期待SASS的自身完善其leaky abstraction了。以NV的软件栈为例。原创 2024-11-17 16:35:22 · 923 阅读 · 0 评论 -
开源科学工程技术软件介绍 – EDA工具KLayout
KLayout于2017年11月在github发布了0.25版,之后每年都保持更新若干次。目前的最新版本是2024年5月发布的0.29.1版。KLayout是使用C++开发的,用户界面基于Qt。它支持Windows、MacOS和Linux操作系统。今天向各位知友介绍的 KLayout是一款由德国团队开发的开源EDA工具。原创 2024-11-17 13:12:21 · 1934 阅读 · 1 评论 -
IEEE JSSC更新|Tiny Tapeout:让每个人都能设计定制芯片
无论您是想学习硬件设计的学生、有独特想法的业余爱好者,还是想把前沿技术引入课堂的教育工作者,Tiny Tapeout都能为您提供一条制作真实物理芯片的便捷途径。一旦您的设计通过了所有自动检查,您就可以通过网站将其提交给下一个可用的Tiny Tapeout shuttle。这允许对设计进行更高级的控制和测试,包括编写简单的Python脚本与您的芯片进行交互的能力。制造完成后,您将收到一块包含您设计的芯片(以及该穿梭器中的所有其他芯片),该芯片安装在小型载板上。),点击链接,根据模板创建新的资源库。原创 2024-11-11 22:58:22 · 801 阅读 · 0 评论 -
能否推荐开源GPU供学习GPU架构
令人惊讶的是,他仅用两周时间就完成了这一脑力壮举。我本人时间也有限,我想开个专题,从我本人研究学习的角度带领大家一起来体会GPU的奥秘。我想的话,他们的重点是在代码的优化、算法的优化上面。笔者正在从事AI算力芯片的一部分IP设计,其中GPU和FPGA都是笔者需要学习和深入的领域。也许GPU并不复杂,这是我从一位业内芯片设计大佬的交流中他的意见,但是。原创 2024-11-11 21:32:49 · 903 阅读 · 0 评论 -
NPU 可不可以代替 GPU
在强化学习算法的帮助下,该技术通过智能搜索合法的映射空间,为程序提供最佳的tiling和调度。然后,在图引擎的帮助下,“Graph”被转换为“Stream”,由几个按顺序排列的“Task”组成。昇腾910采用chiplet方案,一共8个die,4个HBM,2个dummy die,1个soc die,一个NIMBUS die;一共 8 个GPC。下图展示了一个 2048 节点的集群,可以提供512 Peta FLOPS的 fp16 总计算能力,包含 256 台服务器,服务器之间的链路带宽为 100Gbps。原创 2024-11-06 22:01:21 · 1417 阅读 · 0 评论 -
优秀的 Verilog/FPGA开源项目介绍(二十)- 张量处理单元(TPU)
张量处理单元( Tensor Processing Unit, TPU ) 是谷歌专门为神经网络机器学习开发的人工智能加速器 专用集成电路(ASIC) ,特别是使用谷歌自己的TensorFlow软件。谷歌于 2015 年开始在内部使用 TPU,并于 2018 年将它们作为其云基础设施的一部分并通过提供较小版本的芯片出售给第三方使用。张量处理单元于 2016 年 5 月在Google I/O上宣布:当时该公司表示 TPU 已经在其数据中心内使用了一年多。该芯片专为 Google 的TensorFlow框架设计原创 2022-12-07 17:38:20 · 2905 阅读 · 0 评论 -
谷歌开源 芯片
link原创 2022-12-07 17:28:32 · 128 阅读 · 0 评论 -
【FPGA篇】“Error (119013): Current license file does not support the EP4CE10F17C8 device”
破解的时候一定要 以管理员身份运行,否则破解不成功!原创 2022-12-05 20:10:47 · 338 阅读 · 0 评论 -
Quartus-II 13.1 详细安装、注册、配置步骤
是 FPGA 设计开发软件,也就是集成复杂的门电路的设计软件。本文对 quartus 进行安装、注册、配置。转载 2022-12-01 10:21:04 · 13429 阅读 · 2 评论 -
verilog 教程
基础教程高级教程原创 2022-11-29 12:10:22 · 129 阅读 · 0 评论 -
Verilog 时延
在上述例子中,A 或 B 任意一个变量发生变化,那么在 Z 得到新的值之前,会有 10 个时间单位的时延。如果在这 10 个时间单位内,即在 Z 获取新的值之前,A 或 B 任意一个值又发生了变化,那么计算 Z 的新值时会取 A 或 B 当前的新值。由于信号 ai 第二个高电平持续时间小于 20ns,so_lose 信号会因惯性时延而漏掉对这个脉冲的延时检测,所以后半段 so_lose 信号仍然为 0。由于所有的时延均大于 5ns,所以信号 so_get 的结果为与操作后再延迟 5ns 的结果。转载 2022-11-28 19:52:26 · 443 阅读 · 0 评论 -
Verilog中仿真事件中的不同延时方法
Verilog中仿真事件中的不同延时方法电路的延时在实际电路中存在两种延迟,惯性延迟 (Inertial delay) 和传导延迟 (Transport delay)。惯性延迟定义:若元件的输入信号的脉冲宽度小于一定值时,元件的输出没有响应,也就是说元件具有一定的惯性。产生原因:当脉冲到达时,由于脉冲宽度小于元件本身的延迟,当脉冲结束时,元件的新输出还未建立起来。考虑了电路中存在的大量分布电容。传导延迟定义:输入信号变化到对应输出信号变化经过的时间,类似于物理传输线的延迟。转载 2022-11-28 19:46:48 · 1614 阅读 · 0 评论 -
verilog 多路选择器四选一
【代码】verilog 多路选择器四选一。原创 2022-11-28 18:19:22 · 2801 阅读 · 0 评论 -
verilog状态机 三段式 状态机 (代码 可以运行)
硬件设计很讲究并行设计思想,虽然用描述的电路大都是并行实现的,但是对于实际的工程应用,往往需要让硬件来实现一些具有一定顺序的工作,这就要用到状态机思想。什么是状态机呢?简单的说,就是通过不同的状态迁移来完成一些特定的顺序逻辑。硬件的并行性决定了用Verilog描述的硬件实现(臂如不同的always语句)都是并行执行的,那么如果希望分多个时间完成一个任务,怎么办?也许可以用多个使能信号来衔接多个不同的模块,但是这样做多少显得繁琐。状态机的提出会大大简化这一工作。”——特权同学《深入浅出玩转FPGA》原创 2022-11-28 17:25:40 · 4826 阅读 · 0 评论 -
Verilog | 存储单元读写设计
在Verilog当中存储器的定义本质定义一个2维数组。//good_mem是256个8位的寄存器构成的阵列,实际可以存放2Mbit的数据你可能发现了这个后面good_mem内标号顺序和正常定义数组不同,这个其实只是表示了在存储器堆里面,从上到下,每一个寄存器编号不同,无论顺序是[0:255],还是[255:0],这个存储容量都是一样的。以下是good_mem[0:255],如果是改成good_mem[255:0]只是寄存器的编号逆序。其它没有区别。转载 2022-11-25 18:55:01 · 2040 阅读 · 0 评论 -
数字IC设计——数组、存储器(Memory)的定义及Verilog语言实现(二)(存储器的读、取、及初始化赋值)
Verilog中提供了两维数组来帮助我们建立内存的行为模型。具体来说,就是可以将内存定义为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问。这样的数组的定义方式如数组(内存)定义11其中[7:0]是内存的宽度(位宽),而[0:255]则是内存的深度(也就是有多少存储单元),其中宽度为8位,深度为256。地址0对应着数组中的0存储单元。写操作:如果要存储一个值到某个单元中去,可以这样做:1读操作: 而如果要从某个单元读出值,可以这么做:1读取内存中的某一位或者多位。转载 2022-11-25 18:53:29 · 4077 阅读 · 1 评论 -
Verilog generate block
【代码】Verilog generate block。原创 2022-11-25 11:08:02 · 149 阅读 · 0 评论 -
verilog generate
i=0 a=0x0 b=0x0 选择=0x0 输出=0x0。i=1 a=0x0 b=0x1 选择=0x1 输出=0x1。i=2 a=0x1 b=0x1 选择=0x1 输出=0x1。i=0 a=0x0 b=0x0 选择=0x0 输出=0x0。i=1 a=0x0 b=0x1 选择=0x1 输出=0x0。i=2 a=0x1 b=0x1 选择=0x1 输出=0x1。i=3 a=0x1 b=0x0 选择=0x1 输出=0x1。i=4 a=0x1 b=0x0 选择=0x1 输出=0x1。原创 2022-11-25 10:43:02 · 1425 阅读 · 0 评论 -
Verilog模块与端口
模块内部有可选的 5 部分组成,分别是变量声明,数据流语句,行为级语句,低层模块例化及任务和函数,如下图表示。input、inout 类型不能声明为 reg 数据类型,因为 reg 类型是用于保存数值的,而输入端口只能反映与其相连的外部信号的变化,不能保存这些信号的值。模块名,端口信号,端口声明和可选的参数声明等,出现在设计使用的 Verilog 语句(图中 Declarations_and_Statements)之前。对于外部环境来说,模块内部是不可见的,对模块的调用只能通过端口连接进行。转载 2022-11-25 10:40:39 · 723 阅读 · 0 评论 -
verilog 内置语句
门(drive_strength)#(2delays)instance_name[range](list_of_ports);门或开关声明以确定门或开关类型的关键字开头,后跟强度和延迟声明、实例名称、范围以及到门或开关端口的连接列表。门#(3delays) instance_name[range] (list_of_ports);这些逻辑门(示例 1)的实例化可以包含零个、一个或两个延迟。这些逻辑门的实例化(示例 2)可以包含零个、一个或两个延迟。端口列表中的最后一个端口是输入端口。原创 2022-11-25 10:40:19 · 1011 阅读 · 0 评论 -
Verilog中三态门(高阻态)的理解与例子
高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定的。当门电路的输出上拉管导通而下拉管截止时,输出为高电平;反之就是低电平;如上拉管和下拉管都截止时,输出端就相当于浮空(没有电流流动),其电平随外部电平高低而定,即该门电路放弃对输出端电路的控制 。转载 2022-11-24 17:54:49 · 2192 阅读 · 0 评论 -
Verilog 循环语句
repeat 的功能是执行固定次数的循环,它不能像 while 循环那样用一个逻辑表达式来确定循环是否继续执行。如果循环次数是变量信号,则循环次数是开始执行 repeat 循环时变量信号的值。Verilog 循环语句有 4 种类型,分别是 while,for,repeat,和 forever 循环。一般来说,因为初始条件和自加操作等过程都已经包含在 for 循环中,所以 for 循环写法比 while 更为紧凑,但也不是所有的情况下都能使用 for 循环来代替 while 循环。转载 2022-11-24 17:26:03 · 1606 阅读 · 0 评论 -
Verilog 多路分支语句
但是 case 语句中的 x 或 z 的比较逻辑是不可综合的,所以一般不建议在 case 语句中使用 x 或 z 作为比较值。case 语句是一种多路条件分支的形式,可以解决 if 语句中有多个条件选项时使用不方便的问题。当多个条件选项下需要执行相同的语句时,多个条件选项可以用逗号分开,放在同一个语句块的候选项中。default 语句是可选的,且在一个 case 语句中不能有多个 default 语句。casex、 casez 语句是 case 语句的变形,用来表示条件选项中的无关项。原创 2022-11-24 16:59:12 · 754 阅读 · 0 评论 -
Verilog 条件语句
事例中 if 条件每次执行的语句只有一条,没有使用 begin 与 end 关键字。但如果是 if-if-else 的形式,即便执行语句只有一条,不使用 begin 与 end 关键字也会引起歧义。当然,编译器一般按照就近原则,使 else 与最近的一个 if(例子中第二个 if)相对应。例如下面代码,虽然格式上加以区分,但是 else 对应哪一个 if 条件,是有歧义的。条件语句用关键字 if 和 else 来声明,条件表达式必须在圆括号中。条件(if)语句用于控制执行语句要根据条件判断来确定是否执行。原创 2022-11-24 16:44:34 · 3727 阅读 · 0 评论 -
Verilog 语句块(2) 嵌套块
并行块语句块内是并行执行,所以信号 ai_paral2 和信号 bi_paral2 分别在 10ns, 15ns 时被赋值。而并行块中最长的执行时间为 15ns,所以顺序块中的信号 bi_sequen2 在 35ns 时被赋值。原创 2022-11-24 15:31:15 · 215 阅读 · 0 评论 -
Verilog 语句块(一)
而并行块,ai_paral 与 bi_paral 的赋值是同时执行的,所以均在 5ns 时被赋值。如图所示,顺序块顺序执行,第 10ns 时,信号 bi_sequen 才赋值为 8。在本节之前的仿真中,initial 块中的阻塞赋值,都是顺序块的实例。顺序块中每条语句的时延总是与其前面语句执行的时间相关。并行块中每条语句的时延都是与块语句开始执行的时间相关。顺序块中的语句是一条条执行的。当然,非阻塞赋值除外。并行块中的语句是并行执行的,即便是阻塞形式的赋值。顺序块与并行块的区别显而易见,下面用仿真说明。转载 2022-11-24 15:21:19 · 119 阅读 · 0 评论 -
Verilog 时序控制
关键字 posedge 指信号发生边沿正向跳变,negedge 指信号发生负向边沿跳变,未指明跳变方向时,则 2 种情况的边沿变化都会触发相关事件。事件控制主要分为边沿触发事件控制与电平敏感事件控制。当多个信号或事件中任意一个发生变化都能够触发语句的执行时,Verilog 中使用"或"表达式来描述这种情况,用关键字。同理,55ns 时,value_test 值为 1,将其赋值给 value_embed 并延迟 30ns 输出。当延时语句的赋值符号右端是变量时,2 种时延控制可能会产生不同的延时赋值效果。原创 2022-11-24 14:51:00 · 384 阅读 · 0 评论 -
阻塞赋值 非阻塞赋值
如下所示,2 个 always 块中语句并行执行,赋值操作右端操作数使用的是上一个时钟周期的旧值,此时 a原创 2022-11-24 13:40:09 · 613 阅读 · 0 评论 -
always 语句
与 initial 语句相反,always 语句是重复执行的。always 语句块从 0 时刻开始执行其中的行为语句;当执行完最后一条语句后,便再次执行语句块中的第一条语句,如此循环反复。下面用 always 产生一个 100MHz 时钟源,并在 1010ns 时停止仿真代码如下。由于循环执行的特点,always 语句多用于仿真时钟的产生,信号行为的检测等。原创 2022-11-24 13:13:37 · 1195 阅读 · 0 评论 -
initial语句
每个 initial 语句或 always 语句都会产生一个独立的控制流,执行时间都是从 0 时刻开始。initial 语句从 0 时刻开始执行,只执行一次,多个 initial 块之间是相互独立的。如果 initial 块内包含多个语句,需要使用关键字 begin 和 end 组成一个块语句。但是 initial 语句或 always 语句内部可以理解为是顺序执行的(非阻塞赋值除外)。一个模块中可以包含多个 initial 和 always 语句,但 2 种语句不能嵌套使用。原创 2022-11-24 12:47:07 · 1594 阅读 · 0 评论 -
4.1.3 vivado中AXI写DDR说明
下面为几个常用的 AXI 接口 IP 的功能介绍:AXI-DMA:实现从 PS 内存到 PL 高速传输高速通道 AXI-HPAXI-Stream 的转换。AXI-FIFO-MM2S:实现从 PS 内存到 PL 通用传输通道 AXI-GPAXI-Stream 的转换。AXI-Datamover:实现从 PS 内存到 PL 高速传输高速通道 AXI-HPAXI-Stream 的转换,只不过这次是完全由 PL 控制的,PS 是完全被动的。原创 2022-11-23 08:27:59 · 2892 阅读 · 0 评论 -
Verilog十大基本功1(流水线设计Pipeline Design)
3)片内 sram 的读操作,因为 sram 的读操作本身就是两极流水线,除非下一步操作依赖读结果,否则使用流水线是自。来获得第一个计算结果,称 为首次延迟,它要 2*( Tpd+Tco),但是执行重复操作时,只要一个时钟周期来获得最后的。2) 缺点: 功耗增加,面积增加,硬件复杂度增加,特别对于复杂逻辑如 cpu 的流水线而言,流水越深,发生。这里讲到的流水线,主要是一种硬件设计的算法,如第一条中表述的流水线设计就是将组合逻辑系统地分割,并在各。使用流水线一般是时序比较紧张,对电路工作频率较高的时候。转载 2022-11-22 21:09:55 · 819 阅读 · 0 评论 -
Verilog十大基本功2(testbench的设计 文件读取和写入操作 源代码)
https://blog.csdn.net/Times_poem/article/details/52036592转载 2022-11-22 20:56:34 · 203 阅读 · 0 评论 -
Verilog十大基本功3(testbench的设计 iout类型端口信号处理)
总体感觉, testbench 是个很难的事情, 这里讨论的只是一些最基本的东西。如果是在 ModelSim 中作为单独的模块仿真,那么在模块输出的时候,不能使用 force 命令将其设为高阻态,而是使用。也就是说, 在内部模块最好不要出现 inout,如果确实需要,那么用两个 port 实现,到顶层的时候再用三态实现。方法二: 使用 force 和 release 语句,但这种方法不能准确反映双向端口的信号变化,但这种方法可以反在块内。芯片外部引脚很多都使用 inout 类型的,为的是节省管腿。转载 2022-11-22 20:54:19 · 852 阅读 · 0 评论 -
Verilog十大基本功4 (FPGA四大设计要点)
的用处比我们平时想象的用处更广泛,原因在于其中集成的模块种类更多,而不仅仅是原来的简单逻辑单元(LE)。早期的FPGA相对比较简单,所有的功能单元仅仅由管脚、内部buffer、LE、RAM构建而成,LE由LUT(查找表)和D触发器构成,RAM也往往容量非常小。现在的FPGA不仅包含以前的LE,RAM也更大更快更灵活,管脚IOB也更加的复杂,支持的IO类型也更多,而且内部还集成了一些特殊功能单元,包括:DSP:实际上就是乘加器,FPGA内部可以集成多个乘加器,而一般的DSP芯片往往每个core只有一个。转载 2022-11-22 20:50:27 · 380 阅读 · 0 评论 -
Verilog十大基本功6 (关于Verilog的可综合性)关于Verilog的可综合性
(1)所有综合工具都支持的结 构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。= DataOut;转载 2022-11-22 20:47:45 · 449 阅读 · 0 评论 -
Verilog十大基本功8 (flipflop和latch以及register的区别)
比如现在用一个clk接到latch的使能端(假设是高电平使能),这样需要的setup时间,就是数据在时钟的下降沿之前需要的时间,但是如果是一个DFF,那么setup时间就是在时钟的上升沿需要的时间。latch是电平触发,相当于有一个使能端,且在激活之后(在使能电平的时候)相当于导线了,随输出而变化,在非使能状态下是保持原来的信号,这就可以看出和flip-flop的差别,其实很多时候latch是不能代替ff的。锁存器的输出对输入透明的,输入是什么,输出就是什么,这就是锁存器不稳定的原因,转载 2022-11-22 20:42:44 · 1096 阅读 · 0 评论 -
Verilog十大基本功0(阻塞赋值与非阻塞赋值)
阻塞与非阻塞赋值是 Verilog 语言中最基本的部分,也是让大部分 Verilog 新手最困惑的地方。关于阻塞与非阻塞的著作文章可谓汗牛充栋,这些文章对阻塞与非阻塞赋值的原理进行了非常详细的讲解,但新手读了之后依然有种似懂非懂的感觉,编码过程中一如既往的犯错。所以,本文的目的立足于提供一种实用化的解决方案,用最简单的语言和形象的类比让新手能够一目了然的明白正确的编码方式以及相应的电路行为逻辑,关于仿真细节的讲解不是本文重点,需要了解更多细节的朋友可以参考文后列举的参考文献。转载 2022-11-22 20:22:36 · 527 阅读 · 0 评论