自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 verilog竞争与冒险

在大多数情况下,很少会使用增加电容,改变逻辑之类的,常用在时钟信号的事格雷码计数器,Verilog中常用的是打拍延时, 在Verilog书写规范中,有这么几条可以减少出现大量的竞争和冒险问题。1)时序电路建模的啥时候使用非阻塞语句(时序逻辑电路中,非阻塞语句可以消除竞争。) (2)组合逻辑建模时,使用阻塞赋值(当后一个数据的值,是前一个数据的计算结果,也就是说后一个数据需要前一个数的新值,但是非阻塞语句是并行执行的,所以会产生竞争,所以要用阻塞语句来解决组合逻辑电路。

2023-08-19 23:01:14 177

原创 verilog状态机

什么叫状态机,虽然verilog描述的电路都是并行的,但是也有的电路需要顺序执行,需要一些硬件来实现一些具有一定的顺序的工作,这就要用到的思想就叫做状态机。moore型状态机的输出只和当前状态有关,与当前输入无关,输出会在一个完整的时钟周期内保持稳定,即使此时输入信号有变,输出也不会变化。mealy型状态机,这种状态机的输出不仅和当前的状态有关,也和当前的输入有关,既输入有变化,输出也就改变,不管现在输出的状态是稳定还是输入的小改变,都要改变。(1) 状态机第一段,时序逻辑,非阻塞赋值,传递寄存器的状态。

2023-08-19 22:56:47 411

原创 verilog任务~续

根据这个原理,在Verilog中,任务调用的所有局部变量都是静态的,所以可以直接使用关键字automatic来对任务进行声明,那么任务调用时各存储空间可以动态分配,每个调用的任务都有各自独立的运行空间进行操作,而不影响多个相同任务调用时的并发操作。在任务操作的时候,调用任务内的变量,但是任务内的变量只有内部可见,所以外部的操作想要内部变量的变化,就需要将变量声明到全局变量。(在调用任务的时候,重复调用两次以上,一定要用automatic声明任务,不然会引起数据冲突。任务可以以一条语句出现在。

2023-08-19 22:56:15 81

原创 Verilog模块例化

命名端口链接 这种方法需要将例化的模块端口按照名字的对应关系与外部端口链接,端口顺序随意,端口还有两种状态,一种是悬空,就是没有链接,没有找到对应的外部端口,还有就是删除,及不写端口名称。顺序端口链接 输入端口:与模块化声明不同,输入的端口类型可以是reg类型(上文提过的,reg类型是需要保存数值的,模块声明是不需要这个功能的) 输入输出端口:与模块声明是一样,端口必须是reg类型的。

2023-08-16 22:34:57 825 1

原创 Verilog的循环语句

当然,如果所有条件都不满足直接输出对应的结果,同理,在case选择语句当中,每个条件都应该是互斥的,(这块网上文档的解释是可以不互斥,但是我觉得既然是并发执行,不是顺序执行,在选择语句当中,有类似的条件触发,会引发至少是异常,大概率是冲突,网上确说是谁在前先执行,这不更并发执行互斥吗)在多条执行语句中,需要加入begin和end,例如:满足条件1,但是需要作两到三个步骤,然后有个casex和casez语句,没懂,就是去除比较值一样,比如三位数比较最低位,就可以用?代表前两位,然后只比较最后一位。

2023-08-14 22:37:38 111

原创 阻塞赋值和非租塞赋值

(我真没觉的这个更一般说明有什么区别,在看介绍的时候,我还以为是控制电平速率,改变电平信号的那种) Verilog语句块 (这就是一些语法块的书写规则) 顺序块 顺序块用关键字begin和end来表示,顺序块的语句是一句句的执行,每条语句都需要遵循前面的时延, 并行块,有关键字fork和join来表示,顾名思义,所有的语句都是并行的,其中包括所有阻塞语句,非阻塞语句。非阻塞赋值属于并行执行语句,即下一条语句的执行和当前语句的执行是同时进行的,它不会阻塞位于同一个语句块中后面语句的执行。

2023-08-13 10:13:44 64 1

原创 3 Verilog 函数申明介绍(我觉得类似函数申明之类的)

时延函数的作用是操作任意变化语句的执行时间时延。就是在assign定义函数时,在assign后面加上#+时延数值即可,assign #10 Z = A & B;当时延数大于脉冲时长,就会导致,无论变化了什么数值,都没有影响,但是反之,就会及时响应,无论有什么变化,都会得到最近的一个结果,这就叫做惯性时延。

2023-08-09 21:29:17 56

转载 Verilog 编译指令(大部分摘自菜鸟教程)

以反引号 ` 开始的某些标识符是 Verilog 系统编译指令。编译指令为 Verilog 代码的撰写、编译、调试等提供了极大的便利。下面介绍下完整的 8 种编译指令,其中前 4 种使用频率较高。在编译阶段,`define 用于文本替换,类似于 C 语言中的。一旦 `define 指令被编译,其在整个编译过程中都会有效。`undef 用来取消之前的宏定义。elsif,else 编译指令对于ifdef 和 `endif 组成一次条件编译指令块。//如果定义了MCU就使用第一种。

2023-08-09 21:24:06 197

原创 2.Verilog的语法

还有一个位宽的问题,乘法好理解,就是两个操作数的位宽之和,但是对于加法的时候,由于寄存器当中的无符号数和有符号运算的差异,好像统一记成多一位。=),全等(===),非全等(!取反(~),与(&),或(|),异或(^),同或(~^)。归约操作符包括:归约与(&),归约与非(~&),归约或(|),归约或非(~|),归约异或(^),归约同或(~^)。其中有一些特殊的算术符号,比如x,就是未知,无论做什么操作都是x。移位操作符包括左移(<<),右移(>>),算术左移(<<<),算术右移(>>>)。

2023-08-09 21:23:07 41

原创 1.2基础语法续

6)数字数值数字声明时,合法的基数格式有 4 中,包括:十进制('d 或 'D),十六进制('h 或 'H),二进制('b 或 'B),八进制('o 或 'O)。数值可指明位宽,也可不指明位宽。4'b1011// 4bit 数值// 32bit 的数值一般直接写数字时,默认为十进制表示,例如下面的 3 种写法是等效的://一般会根据编译器自动分频位宽,常见的为32bit二进制:4'b0101表示4位二进制数字0101;十进制:4'd2表示4位十进制数字2(二进制0010);

2023-08-09 21:20:39 23

原创 Verilog学习 1.Verilog基础语法

定义部分 :定义不同的项,其中包括 端口类型 (input输入、output输出和inout双向端口)、 寄存器 ( reg )、连线( wire )、参数(parameter)、函数(function)和任务(task);上拉下拉的概念 上拉电阻一般是一端接电源,一端接芯片管脚的电路中的电阻,下拉电阻一般是指一端接芯片管脚一端接地的电阻。Verilog的设计是按照硬件的电平逻辑设计,也就有我们所说的0或者1,高电平,低电平,真值假值。空白符(换行、制表、空格)都没,有实际的意义,在编译阶段可忽略。

2023-07-03 22:11:46 317 1

原创 Five Applications of FPGAs

这是最后一章,介绍FPGA的五个应用以及如何在工业和技术的几个领域中使用的。

2023-06-28 20:36:09 54 1

原创 The Future: Heterogeneous Computing and OpenCL

工业趋势正在推动FPGA在异构计算范式中发挥重要作用。开放计算语言(OpenCL)是一个用于在异构环境中编程FPGA的行业标准开发平台。本章将向您介绍为什么异构计算是必要的,以及用于创建在其上执行的软件的新语言的出现。

2023-06-27 20:26:23 48 1

原创 What’s in an FPGA,Anyway?后续

接下来介绍事务的定义,什么叫事务,简单来说类似对象的概念,但是是一个过程,拥有输入输出和处理。在需求定义期间,设计者需要考虑对设计的约束,例如性能,功耗和尺寸,以及系统功能的设计,函数库的设计,最后还要进行检验和评估,在这其中评估的过程,表明这个系统的特点和实施系统的需求。在以前测试FPGA芯片的工作,主要是采用白盒测试,也就是检测每个设计的实际运行情况,但是现在随着设计的复杂程度不断深化,早期的白盒测试以及变得繁琐,所以采用模拟器的方式进行测试。信息娱乐系统,我理解为车载系统,就是音响,导航之类的。

2023-06-24 16:32:05 36 1

原创 Coding the missing blocks

编程现代FPGA比您想象的要容易得多。 对FPGA编程的步骤包括识别您实际上想要自己设计的设计的任何块,选择高级或硬件描述语言(HDL),在文本编辑器中编写代码,合成设计(稍后详细介绍),放置和路由设计,然后将设计加载到FPGA本身。 将设计加载到FPGA后,可能需要一个调试周期来修复功能错误。bug和debug 的技术用语。bug也就是使计算机软件产生了一个不正确或者非法的结果,debug就是寻找,消除这个bug的过程。在FPGA出现早期,只有HDL这种语言通过线和门来描述块。现在高级软件编程工具

2023-06-22 15:48:26 32 1

原创 Modern Design Flow of FPGAs

在设计兼容系统的同时,需要设计过渡的软件,可以称作中间层。第一步就是总体设计也就是概要设计,设计一个系统流程,确定每个设计所需的组件,接下来实施系统的建设和布置,最后验证系统的完整。也可以进一步分解定义之间的步骤需求和验证进入一个单独的流程,针对上面的流程图,做出改动,System design flow with the software application flow。观察上面的流程图,浅色部分,在这部分里可以编写和检验应用程序,并集成应用程序和硬件。在应用程序集合硬件后,对整个系统进行验证。

2023-06-17 20:40:08 47 1

原创 What’s in an FPGA,Anyway?

这些硅被称为集成电路(IC)。晶体管通过施加电势能(电压)来切换电信号 ,晶体管还可以通过施加电压或电流来放大输入功率,该电压或电流使晶体管输出处的功率大于输入处提供的功率。当你去除阀门上的力时,它会关闭,水停止流动,通过管道。当你给晶体管施加电势(力)时,电流会流过晶体管,然后从另一端流到连接电路的电线上。由于晶体管通过施加或去除电势来切换电信号,因此可以将一组晶体管排列成一个逻辑门,该逻辑门可以执行布尔代数运算之一,如AND、or或NOT(。说句实话,只要学了数电,这些东西真的没啥,说的挺唬人的。

2023-04-29 22:08:47 30

原创 Comparing FPGAs and ASICs

(说句实话,这个东西还是有点奇怪,原文中给的就是知识产权不是我所说的组件,叫 intellectual property built into the FPGA,然后看着后面所说的控制器,我就纳闷了叫啥不好,就叫system,我觉得都还好接受。然后开始进入正题,讲述FPGA的并行性,以往我们所使用的的微型处理器,大多都是没办法简化操作,也就是不智能,加法变为乘法是强化,乘法变为加法,在很多时候就是简化。FPGA在矢量运算上,算是得天独厚,矢量属性在物理学等等学科上非常有效。

2023-04-28 21:54:44 62 1

原创 3.fpgas_for_dummies的学习 --续

专用集成电路(ASIC)是一种集成电路 ,专用标准产品(ASSP)是专门针对特定应用市场并销售给多个用户(因此是标准产品)的IC,而ASIC是为单个客户设计并销售给单个客户的。也就是说ASICs and ASSPs这个就是集成电路,ASSP的应用是微控制器和许多智能手机和平板电脑的核心系统芯片。但是这些芯片都是永久性地在硅片上制造的,一旦需要更改设计,只能换一个芯片。

2023-04-24 21:37:29 56 2

原创 3.fpgas_for_dummies的学习

fpgas_for_dummies的学习日志-一些个人理解

2023-04-23 20:56:50 78 1

原创 FPGA学习入门计划-小白入门

入门FPGA学习计划

2023-04-23 17:45:53 305 1

FPGAs For Dummies的阅读笔记

FPGAs For Dummies的阅读笔记

2023-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除