目录
1.组合逻辑延迟
2.时钟输出延迟Tco
3.同步系统中时钟频率
3.1 建立时间与保持时间都满足
3.2 建立/保持时间不满足
(1) Tcomb太大导致建立时间不满足
(2) 器件的固有保持时间增大(老化)使得保持时间违例
4. 时钟偏斜及其影响
4.1时钟偏斜的物理意义
4.2 时钟偏斜对时序的影响
(1) 对于未引入时钟偏斜时,保持时间与建立时间均不为例必要条件:
(2)引入时钟偏斜后的时序图如下(Tskew21>0)
(3)引入时钟偏斜也可能会导致保持时间违例,进而输出亚稳态的情况(Tskew21>0)
(4)Tskew21 <0时,即clk2先于clk1到达其时钟端,保持时间就比较容易满足了,但对满足建立时间就有所要求了。
4.3实例介绍
1.组合逻辑延迟
布线延迟 与门延迟
数字逻辑电路中,任何输出信号到输入信号之间都有一定的线路延迟 ,把这种线路延迟叫做布线延迟 。当数字逻辑电路经过门电路时 ,同样会造成一定的延迟,我们把这个延迟叫做门延迟 。
图1布线延迟
图2:门延时
2.时钟输出延迟Tco
clock to out的时间,即从时钟触发到数据输出的时间。这是针对触发器器件而言,是触发器的固有参数,不同厂家或不同批次的器件 该参数有差异。
图3:Tco
3.同步系统中时钟频率
图4:同步系统典型电路图
Tsu : 触发器建立时间
Th : 触发器保持时间
T : 电路的工作周期
Tco : 时钟输出延迟
Tskew : 时钟偏斜(clock skew),又称为时钟偏移,是指时钟信号到达数字电路各部分所用时间差异 。
Tcomb: 组合逻辑的延迟。
时钟偏移Skew = 0
为由浅入深,假设 Skew = 0,即说明时钟到达所有器件的时间相同,没有差异,那么图中时钟上升沿1到时钟上升沿2之间刚好相隔一个工作周期T。下面介绍几种情况下的同步时序电路模型的时序图,图中标注了说明。
3.1 建立时间与保持时间都满足
下图为同步时序电路模型时序图 1 (T skew= 0,建立时间和保持时间都满足):
图6:建立保持时间时序图1分析
核心知识点:
(1) Tco+Tcomb将导致数据会延迟到达下一个触发器,要想数据到达下一个触发器时满足建立时间的要求,则必要条件为:
T-(Tco+Tcomb)>Tsu ,即有T>Tco+Tcomb+Tsu。因此一个电路搭建好后,会有一个最小的工作周期Tmin=Tco+Tcomb或者最大的工作频率1/Tmin。
(2) 一般电路的工作时钟不是其所能跑的最高频率,那么其实际工作周期要大于其支持的最小工作周期,这个差值就是建立时间的裕量Ts_slack。反映在计算公式上即为:Ts_slack=T-Tmin=T-(Tco+Tcomb)。会不会出现T-(Tco+Tcomb)
(3) Tco+Tcomb将会导致数据延迟到达下一个触发器,而下一个触发器不仅仅要求数据提前到达保持稳定一段时间,还要求数据被打入后保持一段时间稳定。假设数据源变化速率很慢,慢于时钟速率问题不大因为相邻周期触发器采样的是同一个值送往下一个寄存器,但同步系统中,数据一般跟随时钟同步跳转,即一个cycle会跳变一次,即数据保持一个时钟周期T的稳定状态。如此,本级寄存器在当前时钟采样的数据经过Tco+Tcomb延迟后到达下一级触发器,那么数据在下级触发器在下次时钟上升沿被打入后仍然会保持Tco+Tcomb时间。下级触发器要想满足保持时间,其必要条件为:Tco+Tcomb>Th .
(4)一般Tco+Tcomb不可能刚好等于Th的,因此当Tco+Tcomb大于Th,那么Th-slack =Tco+Tcomb-Th。会不会出现Tco+Tcomb小于Th呢?这不就是保持时间违例的情况吗,遇到这种情况怎么办呢?下面也有介绍。
综上:要想时序收敛,就是建立保持时间不违例,二者缺一不可。
3.2 建立/保持时间不满足
(1) Tcomb太大导致建立时间不满足
下图为同步时序电路模型时序图 2 (Tskew =0,组合逻辑延迟太大,导致建立时间不能满足):
图7:建立时间违例时序图2分析
解决1 :可通过降频(增大周期)以满足建立时间
下图为同步时序电路模型时序图 3 (Tskew = 0,增加时钟周期以满足建立时间):
图8:时钟频率降频
解决2 :优化组合逻辑
解决3: 切割组合逻辑
详见:如何提高电路工作频率
(2) 器件的固有保持时间增大(老化)使得保持时间违例
图9:保持时间违例时序图分析
解决: 当不满足保持时间时,通过增大组合逻辑延迟Tcomb来是保持时间满足
图10:保持时间违例解决
当 Tskew不等于0
之前为了简单介绍知识点 ,未引入时钟偏移Tskew,但时间电路中是存在时间偏移的,分析时候不可忽视。
4. 时钟偏斜及其影响
图11
4.1时钟偏斜的物理意义
时钟偏移指定 了同时发生的两个时钟信号经过时钟驱动器或布线后到达时间上的差异 。
4.2 时钟偏斜对时序的影响
下图给出了未引入和引入时钟偏斜(clock skew)后的同步时序电路图对比模型:
图12
(1) 对于未引入时钟偏斜时,保持时间与建立时间均不为例必要条件:
保持时间不违例 :Tco+Tcomb > Th;
建立时间不违例 :T>Tco+Tcomb+Tsu。
因此不会产生输出亚稳态现象。也可推出 (T-Tco-Tsu) > Tcomb > (Th-Tco) ,即对组合逻辑延迟的要求。
【注意】:这里面只有时钟周期T和组合逻辑延迟Tcomb可变。
(2)引入时钟偏斜后的时序图如下(T skew21>0 )
图12中,由于引入了Tskew21(>0),导致FF2的时钟段clk2的时序相对于FF1的clk1延后了Tskew,但上图的情况属于并未导致保持时间违例,因此未发生输出亚稳态现象。
仔细分析就可以看出,相对于未引入时钟偏斜时的保持时间裕量 (Th-slack = Tco+Tcomb-Th)。此情况中FF2的保持时间裕量变成了Th-slack = Tco+Tcomb-Th-Tskew21, 减少了Tskew21 。(原因就clk2滞后Tskew21,导致保持时间的起点和终点相对于数据延后了)。
1. 保持时间不违例: Tco+Tcomb-Tskew21 >Th
即依旧有Th-slack=Tco+Tcomb-Th-Tskew21 >0,即Tco+Tcomb-Tskew21 >Th ;
2. 建立时间不违例: T+Tskew21 >Tco+Tcomb+Tsu
只要未引入时钟偏移的时候(Tskew21 == 0)的时候,就满足建立时间要求 T>Tco + Tcomb +Tsu,那么引入Tskew后,时钟 Clk2相对于数据滞后,更能够满足建立时间了。甚至之前尚不满足建立时间要求即T < Tco + Tcomb + Tsu情况下,在引入 Tskew后,就有T+Tskew > Tco +Tcomb + Tsu满足了建立时间。
(3)引入时钟偏斜也可能会导致保持时间违例,进而输出亚稳态的情况(T skew21>0 )
1. 保持时间违例 :Tco+Tcomb-Tskew21
当引入的 Tskew21不够大时,没有超过保持时间裕量问题不大,但如果Tskew21太大,Tskew21>Tco+Tcomb-Th=Th-slack(未引入偏移时的裕量),就不再满足保持时间的要求,也会导致输出亚稳态。如下图所示;
2. 建立时间必然不违例
如情况(2)种描述,只要在未引入时钟偏移的情况下满足建立时间,那么只要T skew21>0 就会必定不违例。并且建立时间的裕量: Ts_slack =Tskew+ (T - Tco -Tcomb -Tsu)增加了Tskew。(情况(2)的建立时间也是如此,在此补充一下 )
(4)Tskew21 <0时,即clk2先于clk1到达其时钟端,保持时间就比较容易满足了,但对满足建立时间就有所要求了。
1. 保持时间必然不违例
因为在未引入偏移时候就有Tco+Tcomb > Th,只要Tskew21 <0 ,则Tco+Tcomb- Tskew21 >Th 必然满足。
2. 建立时间不违例:T+ Tskew21 > Tco+Tcomb+Tsu
需要注意的是此时的Tskew21 < 0, 因此 T > Tco+Tcomb+Tsu-Tskew21 ,此时最小时钟周期 Tmin=Tco+Tcomb+Tsu-Tskew21 变大了,支持的最大时钟频率减小了。
标题
(5)同理,当Tskew21 <0 并且T+ Tskew21 < Tco+Tcomb+Tsu , 此时建立时间就违例了,就会产生输出亚稳态现象了。
4.3实例介绍
Ex1:
通常我们可以假设逻辑门的延时为1+0.1k,其中k为逻辑门的输入端个数。比如对于非门,只有一个输入端,那么其延时为1+1*0.1=1.1ns。现有触发器的时序参数为:T su=0.6ns , T h=0.4ns , 0.8ns ≤ T co ≤ 1.0 ns , 需要计算下面电路的最小时钟周期:
答: T clkmin = T co-max + T comb-max + T su =1.0+1.1+0.6=2.7ns。所以该电路最高可跑时钟频率为f max =1/ Tclkmin =370.37Mhz。
Ex2: 4位计数器电路如下图所示:
电路中有很多电路中有很多路径可以使触发器开始(Enable)或结束(Disable),其中最长的路径开始于触发器Q0结束语Q3。电路中这种最长的路径称为关键路径。如上图中红色路线,包括触发器Q0的时钟信号输出至Q的延时Tco,3个与门,1个异或门以及建立时间Tsu,所以有:
Tclkmin = Tco+3* Tand+Txor+Tsu=1.0+3*1.2+1.2+0.6=6.4ns
fmax = 1/Tclkmin =156.25Mhz
电路的最短路径是每个触发器经过一个异或门到它自身,每条这样的路径的最小延时为Tco+Txor=0.8+1.2=2.0ns>Th=0.4ns, 所以电路中不存在时间违背 。
Ex3:在上述Ex2中,是假定时钟clk是同时到达4个触发器的,即时钟clk不存在clock skew、现在我们仍然假设时钟信号clk同时到达Q0、Q1、Q2,但是到达Q3存在一个延时。这种时钟信号到达触发器的时间偏离称为时钟偏斜(clock skew)。关键路径为Q0到Q3,然而Q3的时钟偏斜具有减小延迟的作用。原因在于数据加载到触发器之前就额外的时间,将时钟偏斜 skew=1.5ns 计算在内 ,从Q0到Q3的路径上时延为: Tco+3*Tand+Txor+Tsu-Tskew=6.4-1.5=4.9ns(之前的时延为6.4ns)。此时 从Q0到Q2的线路径成为关键路径:Tclkmin =Tco+2*Tand+Txor+Tsu=1.0+2*1.2+1.2+0.6=5.2ns,
fmax =1/Tclkmin =192.31Mhz。这种情况下,时钟偏斜会提高时钟频率,但如果时钟偏斜是负的,则会降低时钟频率 。
由于时钟偏斜的存在,数据加载到Q3会被延迟,对于所有开始于Q0,Q1,Q2而结束于Q3的路径,加载的延时会提高触发器维持时间的要求(Th+Tskew) ,其中最短的路径是从Q2到Q3,延迟为Tco + Tand + Txor = 0.8+ 1.2+1.2=3.2ns > Th+Tskew=1.9ns,所以不存在时间违背 。
对于时钟偏斜值Tskew >= 2.8ns情况,可以看出存在时间违背,此时不论时钟频率多少,该电路都不可能可靠的工作。
我们再看下面这个例子,在这个电路中有一条路径开始于触发器Q1, 经过一些逻辑门网络,在触发器Q2的D端结束。由图可知,时钟信号到达触发器前存在不同的延迟。假设触发器Q1和Q2的时钟信号延迟分别为t1和t2,这两个触发器之间的时间偏斜可定义为Tskew= t2-t1,假设电路中通过逻辑门路径的最长延迟为TL,则这两个触发器的最小时钟周期为Tclk-min=Tco+TL+Tsu-Tskew, 因此如果t2-t1>0,则时钟频率会提升,否则时钟偏斜会降低频率。
为了计算触发器Q2是否存在时间违背,需要确定触发器的最短路径。如果电路中通过逻辑门的最小延迟为Tl,且Tl+Tco
0,维持时间的限制将更难以满足,而如果t2-t1<0,则较易满足。
你可能感兴趣的:(Verilog)
DS18B20温度传感器的Verilog初始化程序实战指南
北海有座岛
本文还有配套的精品资源,点击获取简介:DS18B20是一款适用于宽温度范围的高精度数字温度传感器,采用Verilog语言实现其初始化程序,以便能够正确地在系统中运行。本指南详细介绍了DS18B20的初始化过程,包括电源配置、分辨率选择、报警阈值设定等,并解释了如何使用Verilog来控制和通信DS18B20传感器,对于嵌入式系统设计和硬件描述语言的学习具有重要价值。1.DS18B20传感器概述1.
verilog ascii码 0-99翻译成16进制数
LEEE@FPGA
FPGA学习记录 fpga开发
VerilogASCII码转16进制数(0-99)moduleascii_to_hex(inputclk,inputrst_n,input[7:0]ascii_high,//十位数的ASCII码input[7:0]ascii_low,//个位数的ASCII码outputreg[7:0]hex_data//输出的16进制数);reg[7<
【数字IC前端笔试真题精刷(2022.7.28)】芯动——数字IC验证工程师(1号卷-验证)
ReRrain
# 数字IC 笔试
声明:本专栏所收集的数字IC笔试题目均来源于互联网,仅供学习交流使用。如有侵犯您的知识产权,请及时与博主联系,博主将会立即删除相关内容。笔试时间:2022-7-28;题目类型:不定项(10x1’=10’)【错选不得分,少选得1/3分】问答(9x10’=90’)文章目录不定项1、(单选)在verilog语言中,a=4'b1011,那么&a=()2、(单选)SystemVerilog中类默认的成员属性
FPGA(现场可编程门阵列)是什么?
Yashar Qian
#嵌入式 fpga开发 计算机体系结构 嵌入式硬件
FPGA(现场可编程门阵列)是什么?FPGA(现场可编程门阵列,Field-ProgrammableGateArray)是一种可通过编程配置硬件电路的半导体芯片,其核心特点是硬件逻辑可重构,既能像软件一样灵活修改,又能像专用芯片(ASIC)一样高效运行。以下是通俗易懂的解析:⚙️术语拆解Field-Programmable(现场可编程):芯片出厂后,用户可通过硬件描述语言(如Verilog/VHD
FPGA与Verilog实现的Cordic算法测试项目
weixin_42668301
本文还有配套的精品资源,点击获取简介:Cordic算法是一种在FPGA和Verilog硬件描述语言中实现高效的数值计算技术,它简化了硬件资源需求,特别适合资源有限的嵌入式系统。通过模块化设计,Cordic算法可以拆分为多个子模块来实现,包括旋转步骤、误差校正和控制逻辑等。该算法通过迭代过程逼近目标值,无需乘法器,从而减少了硬件资源消耗并提高了效率。在实现时需要考虑位宽、迭代次数和误差处理等因素,以
【教程4>第7章>第23节】基于FPGA的RS(204,188)译码verilog实现7——欧几里得迭代算法模块
fpga和matlab
# 第7章·通信—信道编译码 fpga开发 RS译码 欧几里得迭代 教程4
目录1.软件版本2.RS译码器逆元欧几里得算法模块原理分析3.RS译码器逆元欧几里得算法模块的verilog实现3.1RS译码器逆元欧几里得算法模块verilog程序3.2程序解析欢迎订阅FPGA/MATLAB/Simulink系列教程《★教程1:matlab入门100例》《★教程2:fpga入门100例》《★教程3:simulink入门60例》
Vitis HLS 学习笔记--hls::stream(理解串流:基础)
hi94
Vitis HLS 学习 笔记 c++ fpga开发 HLS
目录1.介绍2.示例2.1代码解析2.2定义串流2.3串流的综合报告3.总结1.介绍在VitisHLS中,hls::stream是一个用于在C/C++中进行高级合成的关键数据结构。它类似于C++标准库中的std::stream,但是专门设计用于硬件描述语言(如Verilog或VHDL)中的数据流。hls::stream提供了一种方便的方法来处理数据流,使得在设计硬件加速器时更加灵活和可控。hls:
SPI代码详解FPGA-verilog部分(FPGA+STM32)(一)
MinJohnson
STM32 FPGA/Verilog stm32 fpga spi
声明:本篇文章面向在已对SPI的四种时序有所了解的人我们采用SPI3模式以及将FPGA作从机,STM32作主机的方式讲解,在STM32控制部分采用的是半双工模式,但其实半双工与全双工区别不大,稍加修改即可本文章属于SPI的升级版,将原本的片选线CS_N再多加一根,变成spi_cs_cmd和spi_cs_data,当spi_cs_cmd拉低的时候表示传送的是命令(命令只由单片机发送),当cs_dat
FPGA基础 -- Verilog 锁存器简介
sz66cm
FPGA基础 fpga开发
由浅入深地讲解Verilog中的锁存器(Latch)**,包括:什么是锁存器(定义与作用)锁存器的分类(透明锁存器vs边沿触发器)Verilog中锁存器的建模方式锁存器与触发器的区别锁存器的时序特性与设计陷阱实际应用与避免锁存器的最佳实践综合工具识别锁存器的方式与调试技巧一、什么是锁存器(Latch)?锁存器是一种电平敏感的时序逻辑单元,用于在特定控制信号(如enable或clk为高电平)时锁存输
FPGA基础 -- Verilog 竞争/竞态(Race Condition)
一、什么是“竞争/竞态(RaceCondition)”?概念说明典型后果信号竞争(GlitchRace)由两条或多条逻辑路径传播延迟不同导致。同一时刻从不同路径到达的电平先后顺序不可预知,产生毛刺或错误翻转。硬件级:产生额外脉冲,触发错误状态或计数。事件竞争/仿真竞态(SchedulingRace)仿真器在同一个时刻deltacycle内对同一变量存在多个驱动且调度顺序不确定(典型如=阻塞赋值)。
实现SystemVerilog动态进程的互斥访问
iccnewer
在计算机系统设计中,多个并行进程之间共享内存资源是一个经典问题。就像生活中多个人同时使用一个厨房一样,如果没有合理的协调机制,很容易造成混乱。SystemVerilog标准提供了内置的semaphore类来实现互斥访问,看起来是个不错的解决方案。但这个方案有个明显的缺点:缺乏内建的安全检查机制,开发者可能会无意中向semaphore创建更多的keys,这种不安全的使用方式可能导致系统的不稳定。利用
FPGA基础 -- Verilog 的值变转储文件(VCD:Value Change Dump)
sz66cm
FPGA基础 fpga开发
Verilog的“值变转储文件(VCD:ValueChangeDump)”,这是一项在仿真调试中至关重要的技术,可以帮助你“看见”RTL中每个信号随时间的变化过程。一、什么是Verilog的值变转储文件(VCD)VCD文件是一种标准格式的文本文件,全称为ValueChangeDump,用于记录Verilog仿真过程中信号的取值变化。它的作用类似于逻辑分析仪的抓取波形,但作用于RTL层,用于:波形观
FPGA基础 -- Verilog 的属性(Attributes)
sz66cm
FPGA基础 fpga开发
Verilog的属性(Attributes)的系统化培训内容,适用于希望深入理解属性如何在综合、仿真和工具指示中使用的专业工程师。内容将涵盖:属性的定义、语法、使用场景、典型示例、工具兼容性与注意事项。一、什么是Verilog的属性(Attribute)Verilog的属性是附加在语句或对象上的元信息(Metadata),不会改变功能行为,但用于指导综合器、仿真器或其他EDA工具的行为,例如:优化
System-Verilog 实现DE2-115 流水灯
qwert_qqq
物联网 学习 fpga开发
文章目录一、什么是SystemVerilog二、代码实现实现结果一、什么是SystemVerilogSystemVerilog是一种硬件描述语言(HDL),它用于设计和验证电子系统,特别是在集成电路(IC)和系统级芯片(SoC)的设计过程中。SystemVerilog是Verilog语言的一个超集,它添加了许多新的特性和增强功能,使得设计者可以更高效地进行工作。应用领域:集成电路设计:System
在 DE2-115 开发板上使用 Chisel 编写流水灯程序
奈一410
fpga开发
在DE2-115开发板上使用Chisel编写流水灯程序步骤1:打开QuartusII软件步骤2:编写Verilog代码步骤3:配置项目步骤4:分配引脚步骤5:编译项目步骤6:下载比特流到FPGA步骤7:测试流水灯注意事项在DE2-115开发板上使用Verilog编写流水灯程序,可以遵循以下步骤:步骤1:打开QuartusII软件启动QuartusII软件并创建一个新项目,选择适合DE2-115开发
实验报告:在DE2-115开发板上使用SystemVerilog编写流水灯程序
追寻自己521
fpga开发 单片机 嵌入式硬件
在DE2-115开发板上使用SystemVerilog编写流水灯程序1.实验目标本实验旨在通过使用SystemVerilog重新设计和实现流水灯程序,并在DE2-115开发板上进行验证。同时,使用testbench进行仿真以确保设计的正确性。2.实验器材DE2-115开发板QuartusPrime开发软件ModelSim仿真软件3.SystemVerilog代码3.1流水灯设计systemveri
FPGA基础 -- Verilog 共享任务(task)和函数(function)
sz66cm
FPGA基础 fpga开发
Verilog中共享任务(task)和函数(function)的详细专业培训,适合具有一定RTL编程经验的工程师深入掌握。一、任务(task)与函数(function)的基本区别特性taskfunction调用方式可以在过程块中调用可以在表达式中调用返回值无返回值,通过output/inout传递必须有返回值执行周期可以包含时间延迟#、事件@不能有任何延迟并发可与fork...join结合实现并发
FPGA基础 -- Verilog语言要素之整型数、实数、字符串
sz66cm
FPGA基础 fpga开发
✅一、整型数(Integer)Verilog中的整型值支持如下几种方式表达:1.常规整数格式(literal)10//默认十进制8'd10//8位的十进制108'b1010//8位的二进制8'o12//8位的八进制(12=10)8'hA//8位的十六进制(A=10)2.语法结构说明[位宽]'[进制][数值]位宽:指明宽度,如8'd10是8位进制:b:二进制(binary)o:八进制(octal)d
FPGA verliog语言学习日志
藏进云的褶皱
FPGA fpga开发 学习
1.什么是verilog语言VerilogHDL(HardwareDescriptionLanguage)是一种用于电子系统设计和建模的硬件描述语言。它广泛应用于数字电路的设计和验证,特别是在FPGA(现场可编程门阵列)和ASIC(应用特定集成电路)的开发中。VerilogHDL允许设计师通过编写代码来描述电路的行为和结构,这些代码可以被合成工具转换成实际的硬件电路。以下是VerilogHDL的一
FPGA基础 -- Verilog语言要素之标识符
sz66cm
fpga开发
一、什么是标识符(Identifier)在Verilog中,标识符是用户定义的名字,用于标识模块、变量、端口、函数、任务、参数、宏定义等各种语言要素。就像C语言的变量名、函数名一样,Verilog中的标识符为HDL代码提供了可读性与结构组织的能力。二、Verilog标识符的定义规则(IEEEStd1364/1800)1.普通标识符(不带转义字符)必须以字母(az,AZ)或下划线_开头后续字符可以是
《FPGA开发-1-verilog基本语法》
livercy
笔记 fpga开发
FPGA一般由verilog和VHDL语言开发,但由于verilog与C语言语法相像,更容易让初学者快速掌握这门语言,于是在应用宽度方面是verilog更胜一筹,但VHDL最初是用于军方产品的开发语言,所以VHDL的语法更加严谨,此次我们以广受使用的verilog语言为基础开发FPGA。一、FPGA开发平台(载体)FPGA作为芯片,需要通过使用开发语言以平台为载体进行FPGA设计,目前开发FPGA
FPGA基础 -- Verilog函数
sz66cm
FPGA基础 fpga开发
Verilog函数(function)目标:让具备一般RTL经验的工程师,系统掌握Verilog函数的语法、约束、可综合写法以及在实际项目中的高效用法,为后续SystemVerilog及HLS设计奠定基础。1为什么要用函数?设计痛点函数带来的价值重复逻辑:CRC、Parity、优先编码等往往在多个模块出现将共用运算封装为函数,避免复制粘贴,减少Bug概率可读性差:长表达式嵌套写在连线或always
FPGA基础 -- Verilog 概率分布函数
sz66cm
FPGA基础 fpga开发
Verilog概率分布函数(PDF,ProbabilityDistributionFunction)。一、引言:Verilog语言中的概率建模场景虽然VerilogHDL本身是一种确定性的硬件描述语言,但在仿真验证环境中(尤其是testbench设计中),我们经常需要引入随机性:模拟信号的随机抖动随机输入测试样本(Fuzz测试、随机码流)建立蒙特卡洛模拟(MonteCarlo)功能覆盖率分析中生成
FPGA基础 -- Verilog 禁止语句
关于Verilog中“禁止语句”的详细培训讲解**,结合可综合设计与仿真行为的角度,深入讲解Verilog中的“禁止类语句”(即综合时应避免或仅用于仿真的语句):一、Verilog中的“禁止语句”概念所谓“禁止语句”(或说非综合语句),是指不能被综合工具(如Vivado、Quartus、Synplify)综合到门级电路中,仅用于仿真或调试目的的语法结构。使用这些语句不会被转换为实际的逻辑门或触发器
FPGA基础 -- Verilog 结构建模之模块实例引用语句
sz66cm
FPGA基础 fpga开发
Verilog结构建模中的“模块实例引用语句(ModuleInstantiation)”,包括语法规则、实例化方式、实例参数配置(parameter)、多实例管理、跨文件引用、顶层集成策略等方面,帮助你在实际FPGA项目中灵活构建复杂系统。一、什么是模块实例引用语句?模块实例引用(ModuleInstantiation)是将已有定义的模块调用到当前模块中形成层次结构的关键语句,是结构建模的核心。就
FPGA基础 -- Verilog 结构建模之未连接的端口
sz66cm
FPGA基础 fpga开发
Verilog中结构建模时未连接的端口(UnconnectedPorts),包括:什么是未连接端口如何显式地忽略端口连接实际使用场景工具综合与仿真中的注意事项未连接端口的工程规范建议一、什么是“未连接的端口”?当你例化一个模块时,如果某个端口并不需要使用(例如该模块的调试接口、保留接口、未启用通道),你可以选择不连接这个端口。✅二、未连接端口的写法1.命名连接.port()空写法(推荐)my_mo
FPGA基础 -- Verilog 结构建模之端口
sz66cm
FPGA基础 fpga开发
Verilog结构建模中端口的由浅入深培训讲解,适合从初学者到工程实践者逐步理解使用Verilog的结构化设计思想中的“端口声明与连接”。一、什么是结构建模?Verilog的三种建模方式包括:行为建模(BehavioralModeling)数据流建模(DataflowModeling)结构建模(StructuralModeling)其中:✅结构建模:更接近电路原理图的写法,将电路划分为多个子模块,
FPGA基础 -- Verilog行为建模之循环语句
sz66cm
FPGA基础 fpga开发
行为级建模(BehavioralModeling)是VerilogHDL中最接近软件编程语言的一种描述方式,适用于功能建模和仿真建模的初期阶段。在行为级中,循环语句(loopstatements)是常见且重要的控制结构,用于重复执行一段操作。我们从浅到深系统讲解Verilog中的行为级建模循环语句,分为以下几个层次:一、基础循环语句类型总览Verilog提供了以下几种循环语句:语句类型说明repe
FPGA基础 -- Verilog 数据流建模
一、数据流建模概念简介(初级)1.什么是数据流建模?数据流建模是一种使用并行赋值语句(assign)来表达布尔逻辑或组合逻辑行为的建模方式。它强调信号之间的逻辑数据依赖关系,而不明确指定信号何时更新(不使用时钟)。特点:面向组合逻辑,不依赖时钟;高度抽象,更关注表达式而非行为顺序;使用assign语句进行建模。2.基础语法assigny=a&b;assignz=(a|b)&c;上面两个assign
FPGA基础 -- Verilog 数据流建模之幅值比较器
sz66cm
fpga开发
一、什么是幅值比较器(MagnitudeComparator)?幅值比较器用于比较两个数的大小关系,输出三种可能的状态:A>BA==BABeq:A==Blt:A、B);assigneq=(A==B);assignlt=(AB);assigneq=(A==B);assignlt=(Athreshold);流水线排序比较器assignswap=(a>b);assignmax=swap?a:b;assi
mondb入手
木zi_鸣
mongodb
windows 启动mongodb 编写bat文件,
mongod --dbpath D:\software\MongoDBDATA
mongod --help 查询各种配置
配置在mongob
打开批处理,即可启动,27017原生端口,shell操作监控端口 扩展28017,web端操作端口
启动配置文件配置,
数据更灵活 
大型高并发高负载网站的系统架构
bijian1013
高并发 负载均衡
扩展Web应用程序
一.概念
简单的来说,如果一个系统可扩展,那么你可以通过扩展来提供系统的性能。这代表着系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展和语言、某项具体的技术都是无关的。扩展可以分为两种:
1.
DISPLAY变量和xhost(原创)
czmmiao
display
DISPLAY
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:DISPLAY=:0.0
获取B/S客户端IP
周凡杨
java 编程 jsp Web 浏览器
最近想写个B/S架构的聊天系统,因为以前做过C/S架构的QQ聊天系统,所以对于Socket通信编程只是一个巩固。对于C/S架构的聊天系统,由于存在客户端Java应用,所以直接在代码中获取客户端的IP,应用的方法为:
String ip = InetAddress.getLocalHost().getHostAddress();
然而对于WEB
浅谈类和对象
朱辉辉33
编程
类是对一类事物的总称,对象是描述一个物体的特征,类是对象的抽象。简单来说,类是抽象的,不占用内存,对象是具体的,
占用存储空间。
类是由属性和方法构成的,基本格式是public class 类名{
//定义属性
private/public 数据类型 属性名;
//定义方法
publ
android activity与viewpager+fragment的生命周期问题
肆无忌惮_
viewpager
有一个Activity里面是ViewPager,ViewPager里面放了两个Fragment。
第一次进入这个Activity。开启了服务,并在onResume方法中绑定服务后,对Service进行了一定的初始化,其中调用了Fragment中的一个属性。
super.onResume();
bindService(intent, conn, BIND_AUTO_CREATE);
base64Encode对图片进行编码
843977358
base64 图片 encoder
/**
* 对图片进行base64encoder编码
*
* @author mrZhang
* @param path
* @return
*/
public static String encodeImage(String path) {
BASE64Encoder encoder = null;
byte[] b = null;
I
Request Header简介
aigo
servlet
当一个客户端(通常是浏览器)向Web服务器发送一个请求是,它要发送一个请求的命令行,一般是GET或POST命令,当发送POST命令时,它还必须向服务器发送一个叫“Content-Length”的请求头(Request Header) 用以指明请求数据的长度,除了Content-Length之外,它还可以向服务器发送其它一些Headers,如:
HttpClient4.3 创建SSL协议的HttpClient对象
alleni123
httpclient 爬虫 ssl
public class HttpClientUtils
{
public static CloseableHttpClient createSSLClientDefault(CookieStore cookies){
SSLContext sslContext=null;
try
{
sslContext=new SSLContextBuilder().l
java取反 -右移-左移-无符号右移的探讨
百合不是茶
位运算符 位移
取反:
在二进制中第一位,1表示符数,0表示正数
byte a = -1;
原码:10000001
反码:11111110
补码:11111111
//异或: 00000000
byte b = -2;
原码:10000010
反码:11111101
补码:11111110
//异或: 00000001
java多线程join的作用与用法
bijian1013
java 多线程
对于JAVA的join,JDK 是这样说的:join public final void join (long millis )throws InterruptedException Waits at most millis milliseconds for this thread to die. A timeout of 0 means t
Java发送http请求(get 与post方法请求)
bijian1013
java spring
PostRequest.java
package com.bijian.study;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURL
【Struts2二】struts.xml中package下的action配置项默认值
bit1129
struts.xml
在第一部份,定义了struts.xml文件,如下所示:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts
【Kafka十三】Kafka Simple Consumer
bit1129
simple
代码中关于Host和Port是割裂开的,这会导致单机环境下的伪分布式Kafka集群环境下,这个例子没法运行。
实际情况是需要将host和port绑定到一起,
package kafka.examples.lowlevel;
import kafka.api.FetchRequest;
import kafka.api.FetchRequestBuilder;
impo
nodejs学习api
ronin47
nodejs api
NodeJS基础 什么是NodeJS
JS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。
每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了docum
java-64.寻找第N个丑数
bylijinnan
java
public class UglyNumber {
/**
* 64.查找第N个丑数
具体思路可参考 [url] http://zhedahht.blog.163.com/blog/static/2541117420094245366965/[/url]
*
题目:我们把只包含因子
2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14
二维数组(矩阵)对角线输出
bylijinnan
二维数组
/**
二维数组 对角线输出 两个方向
例如对于数组:
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 },
slash方向输出:
1
5 2
9 6 3
13 10 7 4
14 11 8
15 12
16
backslash输出:
4
3
[JWFD开源工作流设计]工作流跳跃模式开发关键点(今日更新)
comsci
工作流
既然是做开源软件的,我们的宗旨就是给大家分享设计和代码,那么现在我就用很简单扼要的语言来透露这个跳跃模式的设计原理
大家如果用过JWFD的ARC-自动运行控制器,或者看过代码,应该知道在ARC算法模块中有一个函数叫做SAN(),这个函数就是ARC的核心控制器,要实现跳跃模式,在SAN函数中一定要对LN链表数据结构进行操作,首先写一段代码,把
redis常见使用
cuityang
redis 常见使用
redis 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted sets
引入jar包 jedis-2.1.0.jar (本文下方提供下载)
package redistest;
import redis.clients.jedis.Jedis;
public class Listtest
配置多个redis
dalan_123
redis
配置多个redis客户端
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&quo
attrib命令
dcj3sjt126com
attr
attrib指令用于修改文件的属性.文件的常见属性有:只读.存档.隐藏和系统.
只读属性是指文件只可以做读的操作.不能对文件进行写的操作.就是文件的写保护.
存档属性是用来标记文件改动的.即在上一次备份后文件有所改动.一些备份软件在备份的时候会只去备份带有存档属性的文件.
Yii使用公共函数
dcj3sjt126com
yii
在网站项目中,没必要把公用的函数写成一个工具类,有时候面向过程其实更方便。 在入口文件index.php里添加 require_once('protected/function.php'); 即可对其引用,成为公用的函数集合。 function.php如下:
<?php /** * This is the shortcut to D
linux 系统资源的查看(free、uname、uptime、netstat)
eksliang
netstat linux uname linux uptime linux free
linux 系统资源的查看
转载请出自出处:http://eksliang.iteye.com/blog/2167081
http://eksliang.iteye.com 一、free查看内存的使用情况
语法如下:
free [-b][-k][-m][-g] [-t]
参数含义
-b:直接输入free时,显示的单位是kb我们可以使用b(bytes),m
JAVA的位操作符
greemranqq
位运算 JAVA位移 << >>>
最近几种进制,加上各种位操作符,发现都比较模糊,不能完全掌握,这里就再熟悉熟悉。
1.按位操作符 :
按位操作符是用来操作基本数据类型中的单个bit,即二进制位,会对两个参数执行布尔代数运算,获得结果。
与(&)运算:
1&1 = 1, 1&0 = 0, 0&0 &
Web前段学习网站
ihuning
Web
Web前段学习网站
菜鸟学习:http://www.w3cschool.cc/
JQuery中文网:http://www.jquerycn.cn/
内存溢出:http://outofmemory.cn/#csdn.blog
http://www.icoolxue.com/
http://www.jikexue
强强联合:FluxBB 作者加盟 Flarum
justjavac
r
原文:FluxBB Joins Forces With Flarum作者:Toby Zerner译文:强强联合:FluxBB 作者加盟 Flarum译者:justjavac
FluxBB 是一个快速、轻量级论坛软件,它的开发者是一名德国的 PHP 天才 Franz Liedke。FluxBB 的下一个版本(2.0)将被完全重写,并已经开发了一段时间。FluxBB 看起来非常有前途的,
java统计在线人数(session存储信息的)
macroli
java Web
这篇日志是我写的第三次了 前两次都发布失败!郁闷极了!
由于在web开发中常常用到这一部分所以在此记录一下,呵呵,就到备忘录了!
我对于登录信息时使用session存储的,所以我这里是通过实现HttpSessionAttributeListener这个接口完成的。
1、实现接口类,在web.xml文件中配置监听类,从而可以使该类完成其工作。
public class Ses
bootstrp carousel初体验 快速构建图片播放
qiaolevip
每天进步一点点 学习永无止境 bootstrap 纵观千象
img{
border: 1px solid white;
box-shadow: 2px 2px 12px #333;
_width: expression(this.width > 600 ? "600px" : this.width + "px");
_height: expression(this.width &
SparkSQL读取HBase数据,通过自定义外部数据源
superlxw1234
spark sparksql sparksql读取hbase sparksql外部数据源
关键字:SparkSQL读取HBase、SparkSQL自定义外部数据源
前面文章介绍了SparSQL通过Hive操作HBase表。
SparkSQL从1.2开始支持自定义外部数据源(External DataSource),这样就可以通过API接口来实现自己的外部数据源。这里基于Spark1.4.0,简单介绍SparkSQL自定义外部数据源,访
Spring Boot 1.3.0.M1发布
wiselyman
spring boot
Spring Boot 1.3.0.M1于6.12日发布,现在可以从Spring milestone repository下载。这个版本是基于Spring Framework 4.2.0.RC1,并在Spring Boot 1.2之上提供了大量的新特性improvements and new features。主要包含以下:
1.提供一个新的sprin