FPGA学习笔记
1.名词解释:
FPGA:现场可编程门阵列,一般工艺SRAM(易失性),所以要外挂配置芯片。
CPLD:复杂可编程逻辑器件,一般工艺Flash(不易失)。
ASIC:专用集成电路
SOC:片上系统
SOPC:片上可编程系统
2.Verilog语法类:
①Verilog两大数据类型:一类是线网类型,另一类是寄存器类型。
线网类型表示硬件电路元件之间实际存在的物理连线,有很多种:wire、tri、wor等等,当然日常使用wire最多,其他的都没遇到过。
寄存器类型表示一个抽象的数据存储单元,只能在initial或always内部被赋值,并且变量的值将从一条赋值语句保持到下一条赋值语句。有5种:reg、time(64位无符号的时间变量)、integer(32位带符号的整数型变量)、real/realtime(64位带符号的实数型变量)。reg用的最多。
②Verilog建模方式:结构化描述方式、数据流描述方式、行为描述方式、混合描述方式。
结构描述是指通过调用逻辑原件,描述它们之间的连接来建立逻辑电路的verilog HDL模型。这里的逻辑元件包括内置逻辑门、自主研发的已有模块、商业IP模块。
数据流描述是指根据信号之间的逻辑关系,采用持续赋值语句描述逻辑电路的方式。通过观察是否使用assign赋值语句可以判断是否有数据流描述。
行为描述是指只注重实现的算法,不关心具体的硬件实现细节。这与C语言编程非常类似。通过观察是否使用initial 或always语句块可以判断是否有行为描述。
混合描述是指以上几种描述方法都存在的一种描述方式。具体在一个工程中,不可能只是用单独哪一种描述方式,一般都是各种描述方式的混合。
3.VHDL相对于Verilog不能描述的层级?
网上有段话说的是:Verilog在其门级描述的底层,即晶体管开关级的描述方面比VHDL更强一些,所以即使使用VHDL的设计环境,在底层实质上也会由Verilog描述的器件库所支持。
Verilog较为适合系统级、算法级、RTL级、门级、开关级的设计,而对于特大型(千万门级以上)的系统设计,则VHDL更为适合。(VHDL比较严谨,而Verilog可以花式编码)
所以,VHDL不能描述开关级。
4.阻塞与非阻塞的区别:
对于代码:
1 //blocking; 2 begin 3 B = A; 4 C = B + 1; 5 end 6 //non-blocking; 7 begin 8 B <= A; 9 C <= B + 1; 10 end
在always语句内部过程赋值语句有两种,阻塞赋值语句与非阻塞赋值语句。
两者主要区别是完成赋值操作的时间不同,阻塞赋值语句的赋值操作是立即执行的,即执行后一句的时候,前一句的赋值已经完成;而非阻塞赋值语句的赋值操作到结束顺序语句块时才完成赋值操作,即赋值操作完成后,语句块的执行也就结束了。即阻塞是串行执行,非阻塞是并行执行的。对于上述代码,阻塞赋值中相当于C = A + 1;非阻塞赋值中B先前的值被A替代,但C的值是B先前值加1。
5.亚稳态是什么怎么解决亚稳态?
触发器输入端口的数据在时间窗口内发生变化,会导致时序违例。触发器的输出在一段时间内徘徊在一个中间电平,既不是0也不是1。这段时间称为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到0或者1,是随机的,与输入没有必然的关系。
触发器由于物理工艺原因,数据并不是理想化的只要触发沿时刻不变即可。触发器有固定的建立时间,保持时间。
建立时间:在时钟有效沿到来前数据需要稳定的时间。
保持时间:在时钟有效沿之后数据还需要保持不变的时间。
后果:会给设计带来致命的功能故障。
一般来说,信号是在异步信号,跨时钟域,复位电路中产生亚稳态。
解决方式:
1.单比特信号:
①采用同步器同步,低速设计打两拍,高速设计可能需要打三拍。
低速到高速时钟域,低速信号一般能被高速时钟域采到甚至多次。但高速时钟域到低速时钟域就不太好办了:
②闭环解决方案:采用握手反馈信号,这会导致延时开销大。
③开环解决方案:把信号展宽,至少为采样T的1.5倍。这样至少能采到一次。
2.多比特信号:
传递多比特信号,普通同步器就没啥卵用了,因为多比特信号偶发数据变化歪斜,导致采到的不一定是正确数据。
①多比特信号融合:把多比特信号转换为单比特信号,再用同步器同步。
②多周期路径规划:数据不需要同步,至需要同时传递一个同步的使能信号到接收时钟域即可,使能信号没被同步到接收时钟域并被识别之前数据不被采集。即在信号某个沿产生同步脉冲指示信号。
③异步fifo。
6.竞争冒险是什么,怎么解决竞争冒险?
在组合电路中,当输入信号改变状态时,输出端可能出现虚假信号(过渡干扰脉冲),这对电路来说是不利的。
在数字电路中,任何一个门电路只要有两个输入信号同时向相反方向变化(由01变成10,或者相反),其输出端就可能产生干扰脉冲。
信号由于经由不同路径传输达到某一汇合点的时间有先有后的现象,就称之为竞争,英文名Race;由于竞争现象所引起的电路输出发生瞬间错误的现象,就称之为冒险,英文名Hazard或者Risk。
有竞争不一定有冒险,但出现了冒险就一定存在竞争。
如下图的简单电路,由于门电路的延时,A非相对于A信号会滞后一丢丢(时间由工艺决定),这就会导致输出产生一个干扰脉冲。
更现实一点,对于一个与门:
解决方式:
1.引入封锁脉冲:引入负脉冲,在输入信号发生竞争的时间内,把可能产生的干扰脉冲的门锁住。
封锁脉冲的宽度不应小于过渡时间且与输出信号转换同步。
缺点:脉冲宽度和产生时间有严格要求。
2.引入选通脉冲:在电路状态稳定后,再选通输出。
缺点:脉冲宽度和产生时间有严格要求。
3.引入滤波电容:输出端并接一个不大的滤波电容
缺点:输出波形边沿变坏。
4.修改逻辑设计,增加冗余项:
对于给定的逻辑 Y=AB+ÃC,当BC都为1的时候,若A值改变,则会发生竞争。所以可以添加冗余项:
Y=AB+ÃC+BC
分析有无竞争冒险:画出函数的卡诺图,检查有无几何相邻的逻辑项,有则可能产生竞争冒险。
7.你使用的器件名称含义?
- 光电混合新范式:全球首款128x128矩阵规模光电混合计算卡正式发布
- 厦门航空新开福州-河内航线
- 基于RFID技术建筑物资材料智能管理解决方案
- 【CW32模块使用】1.47寸彩屏
- SK海力士已完成收购英特尔NAND业务部门的第二(最终)阶段交易
- FPGA学习笔记
- Matter大潮下,智能家居虽“贵”但“值”
- 5000台量产!Optimus单机成本暴跌70%?特斯拉机器人带来新震撼
- 常州从成都挖来的传感器公司,再获数千万元融资
- AI揭秘:远东控股如何成为全球线缆行业第一品质品牌
- 岳冉高频与超高频RFID读写模块定制开发
- 赛微电子:2024年营收超12亿元,MEMS代工业务同比增长31.52%
- DC-DC电源模块的应用电路及接法
- 技术分享 | AVM合成数据仿真验证方案
- 绝缘监测装置助力保障光伏系统安全高效运行
- 当电力设备开始 “发烧”:无线测温如何成为电网的隐形守护者