目录
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)
verilog 从入门到看得懂---verilog 的基本语法数据和运算
DKZ001
fpga开发
笔者之前主要是使用c语言和matab进行编程,从2024年年初开始接触verilog,通过了一周的学习,基本上对verilog的语法有了基本认知。总统来说,verilog的语法还是很简单的,主要难点是verilog是并行运行,并且强烈和硬件实际电路相关,在设计到的时候需要考虑时序问题和可综合问题。时序问题:因为verilog是基于硬件实现,在实现的时候要考虑到硬件电路的建立时间和稳定时间,所以会遇
Verilog语法-参数(parameter,localparam)
刘小适
Verilog设计 硬件架构 fpga开发
一、参数的用途Veilog中参数的关键词为parameter、localparam,它们在verilog模块的主要用途有两个:第一是便于阅读;第二是便于进行模块的修改。便于阅读很好理解,将代码中常用的数值参数化,用对应的逻辑含义来进行参数命名,这样变提高了代码的逻辑可读性。便于修改主要是两个方面,一方面是在要对代码中多处重复出现的同一值进行修改时,容易出现漏改错改的现象,使用参数后,便只用修改参数
verilog中,何时用reg和wire
四臂西瓜
其他 fpga开发 FPGA
何时用?组合逻辑用wire,时序逻辑用reg。reg可以存储数据,wire则就是一根线,只能传递数据。比如?时序逻辑always@(posedgeclkornegedgerst_n)begin//bigrivergoestotheeastendinitialbegin//AllthestartfollowsBeidouend组合逻辑assignhey=hey;//Bagayalualways@(*
System Verilog学习笔记(十二)——数组(2)
颖子爱学习
System Verilog学习笔记 学习 笔记
SystemVerilog学习笔记(十二)——数组(2)动态数组在编译时不会为其定制尺寸,而是在仿真运行时来确定动态数组一开始为空,需要使用new[]来为其分配空间声明方式intdyn[],d2[];//声明了两个动态数组initialbegindyn=new[5];//包含5个元素foreach(dyn[j])dyn[j]=j;//初始化元素d2=dyn;//拷贝数组dyn.delete();/
#FPGA(基础知识)
GrassFishStudio
fpga开发
1.IDE:QuartusII2.设备:CycloneIIEP2C8Q208C8N3.实验:正点原子-verilog基础知识4.时序图:5.步骤6.代码:
数字信号处理基础----xilinx除法器IP使用
black_pigeon
FPGA数字信号处理 数字信号处理基础 补码
前言在进行数字信号处理的时候,计算是必不可少的,通常情况下,能够不用乘法器和除法器就不用乘除法器,可以采用移位和加减法的方式来完成计算。但在一些特殊情况下,希望采用乘除法,这时候在FPGA当中就需要专用的IP了。乘除法在FPGA当中实现起来是比较困难的一件事情。若直接在verilog代码中使用了乘法或者除法,其实最终对应到电路中,要么是采用大量的blockram来实现,要么是占用DSP资源。这种情
vivado DSP Block
cckkppll
fpga开发
当对推理进行编码并以DSP块为目标时,建议使用签名算术运算,并且要求预加器结果有一个额外的宽度位,以便可以打包到DSP块中。Pre-AdderDynamicallyConfiguredFollowedbyMultiplierandPost-Adder(Verilog)Filename:dynpreaddmultadd.v//Pre-add/subtractselectwithDynamiccont
vivado Convergent Rounding (LSB CorrectionTechnique)
cckkppll
fpga开发
DSP块基元利用模式检测电路来计算收敛舍入(要么为偶数,要么为奇数)。以下是收敛舍入推理的示例,它在块满时进行推理并且还推断出2输入and门(1LUT)以实现LSB校正。RoundingtoEven(Verilog)Filename:convergentRoundingEven.v//Convergentrounding(Even)Examplewhichmakesuseofpatterndete
FPGA中一些基本概念原理的区分
长安er
fpga开发
一、wire型变量与reg变量在Verilog中,wire和reg是两种不同类型的变量,它们有着不同的特性和用途1.1wire变量wire变量用于连接模块中的输入、输出以及内部信号线。它主要用于表示连续赋值的逻辑连接,类似于硬件电路中的导线。wire变量不能在always块或initial块中赋值,它们只能通过连续赋值“assign”语句连接到其他信号,1.2reg变量它主要用于表示时序逻辑中的寄
vivado FIR Filters
cckkppll
fpga开发
Vivado合成直接从RTL中推导出乘加级联来组成FIR滤波器。这种滤波器有几种可能的实现方式;一个例子是收缩滤波器在7系列DSP48E1Slice用户指南(UG479)中进行了描述,并在8抽头偶数中显示对称收缩FIR(Verilog)。从编码示例下载编码示例文件。8-TapEvenSymmetricSystolicFIR(Verilog)Filename:sfir_even_symetric_s
基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench
简简单单做算法
Verilog算法开发 # 通信工程 fpga开发 ECG信号 滤波 心率计算
目录1.算法运行效果图预览2.算法运行软件版本3.部分核心程序4.算法理论概述4.1ECG信号的特点与噪声4.2FPGA在ECG信号处理中的应用4.3ECG信号滤波原理4.4心率计算原理4.5FPGA在ECG信号处理中的优势5.算法完整程序工程1.算法运行效果图预览其RTL结构如下:2.算法运行软件版本vivado2019.23.部分核心程序............................
FPGA中的模块调用与例化
长安er
fpga开发
目录一、模块调用与实例化1.1模块调用1.2模块实例化1.3Verilog例化语句及其用法1.3.1例化语句的基本格式1.3.2实例化三种不同的连接方法二、模块调用实例-全加器与半加器2.1半加器模块2.2全加器模块三、参数定义关键词与整数型寄存器3.1参数定义关键词parameter3.2局部参数定义关键词localparam3.3整数型寄存器integer四、总结一、模块调用与实例化在FPGA
05 状态机
lf282481431
FPGA开发入门 fpga开发
状态机简介Verilog是硬件描述语言,它所生成的电路都是并行执行的,当需要按照流程或者步骤来完成某个功能时,可以使用多个if嵌套语句来实现,但是这样就增加了代码的复杂度,使得代码可读性差、维护困难,此时若通过状态机来控制程序流程即可解决这个问题。状态机相当于一个控制器,它将一项复杂流程的流程分解为若干步,每步对应于一个状态,通过预先设计的规则在各状态之间进行跳转,从而控制程序执行流程的目的。状态
06 分频器设计
lf282481431
FPGA开发入门 fpga开发
分频器简介实现分频一般有两种方法,一种方法是直接使用PLL进行分频,比如在FPGA或者ASIC设计中,都可以直接使用PLL进行分频。但是这种分频有时候受限于PLL本身的特性,无法得到频率很低的时钟信号,比如输入100Mhz时钟,很多PLL都无法得到1Mhz以下的时钟信号。另外一种方法是直接使用Verilog代码来实现分频。注意:使用Verilog代码分频得到的时钟信号尽量不要当做其他模块的输入时钟
verilog有符号数使用方法简介
MmikerR
# verilog fpga verilog
参考:https://www.cnblogs.com/yuandonghua/p/signed.htmlhttps://blog.csdn.net/a389085918/article/details/799156851有符号数定义有符号数的定义通过关键词signed实现,如果不使用signed则默认都为无符号数。定义2个8位的有符号的变量:regsigned[7:0]a;wiresigned[7
m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件
我爱C编程
FPGA通信和信号处理 fpga开发 RS卷积级联编译码
目录1.算法仿真效果2.算法涉及理论知识概要2.1卷积码编码2.2RS码编码2.3级联编码2.4解码过程3.Verilog核心程序4.完整算法代码文件获得1.算法仿真效果Vivado2019.2仿真结果如下:2.算法涉及理论知识概要级联码是一种通过将两种或多种纠错码结合使用来提高纠错能力的编码方案。在RS+卷积级联编码中,通常首先使用卷积码对原始数据进行编码,以增加冗余并提供一定的纠错能力。然后,
17 ABCD数码管显示与动态扫描原理
Dale_e
verilog学习 fpga开发 笔记 学习 经验分享 verilog学习
1.驱动八位数码管循环点亮1.1数码管结构图数码管有两种结构,共阴极和共阳极,ACX720板上的是共阳极数码管,低电平点亮。1.2三位数码管等效电路图为了节约I/O接口,各个数码管的各段发光管被连在一起,通过sel端口选择要发光的数码管。1.3单个数码管发光的LUT(lookuptable)2.数码管显示与动态扫描逻辑建模3.数码管显示与动态扫描的Verilog实现3.1不完善的设计代码版本1.设
计算机组成原理 1 概论
Sanchez·J
计算机组成原理 电脑
主要内容介绍运算器、控制器、存储器结构、工作原理、设计方法及互连构成整机的技术。主要内容:◼数值表示与运算方法◼运算器的功能、组成和基本运行原理◼存储器及层次存储系统◼指令系统◼CPU功能、组成和运行原理◼流水线◼系统总线◼输入输出系前置知识C语言程序设计数值逻辑:组合电路、同步电路概念、寄存器传输、有限状态机汇编语言程序设计:能看懂指令即可Verilog硬件描述语言:作为实验工具(可选)冯诺依曼
verilog $*命令
li_li_li_1202
1、$display,$write,$fdisplay,$fopen,$fclose用于信息的显示和输出。其中,%b或%B二进制%o或%O八进制%d或%D十进制%h或%H十六进制%e或%E实数%c或%C字符%s或%S字符串%v或%V信号强度%t或%T时间%m或%M层次实例\n换行\t制表符\\反斜杠\\"引号”\%%百分号%调用方式:eg:$display("%b+%b=%b",a,b,sum);
Stein算法求最大公约数 verilog实现
因蕃
verilog语言 verilog
Stein算法求最大公约数verilog实现实然想写写博客,最近在学verilog。然后就想记录一下算法步骤:1、先装载A和B的值,C初始值设为1。2、若A=0,则B是最大公约数;若B=0,则A是最大公约数;若A=B,则A是最大公约数。若上面三种情况都不成立,则跳到3,否则跳到43、若A是偶数,B是偶数;则A>>1,B>>1,C>1,B不变,C不变;若A是奇数,B是偶数;则A不变,B>>1,C不变
Verilog刷题笔记29
十六追梦记
笔记
题目:Createa100-bitbinaryripple-carryadderbyinstantiating100fulladders.Theadderaddstwo100-bitnumbersandacarry-intoproducea100-bitsumandcarryout.Toencourageyoutoactuallyinstantiatefulladders,alsooutputth
Verilog刷题笔记8
十六追梦记
笔记
题目:Thisproblemissimilartothepreviousone(module).Youaregivenamodulenamedthathas2outputsand4inputs,inthatorder.Youmustconnectthe6portsbypositiontoyourtop-levelmodule’sports,,,,,and,inthatorder.mod_aout1
Verilog刷题笔记9
十六追梦记
笔记
题目:Thisproblemissimilartomodule.Youaregivenamodulenamedthathas2outputsand4inputs,insomeorder.Youmustconnectthe6portsbynametoyourtop-levelmodule’sports:mod_a我的解法:moduletop_module(inputa,inputb,inputc,i
Verilog刷题笔记10
十六追梦记
笔记 fpga开发
题目:Youaregivenamodulewithtwoinputsandoneoutput(thatimplementsaDflip-flop).Instantiatethreeofthem,thenchainthemtogethertomakeashiftregisteroflength3.Theportneedstobeconnectedtoallinstances.my_dffclkThe
Verilog刷题笔记24
十六追梦记
笔记
题目:Veriloghasaternaryconditionaloperator(?:)muchlikeC:(condition?if_true:if_false)Thiscanbeusedtochooseoneoftwovaluesbasedoncondition(amux!)ononeline,withoutusinganif-theninsideacombinationalalwaysblo
Verilog刷题笔记2
十六追梦记
笔记
题目:Buildacombinationalcircuitwithfourinputs,in[3:0].Thereare3outputs:out_and:outputofa4-inputANDgate.out_or:outputofa4-inputORgate.out_xor:outputofa4-inputXORgate.ToreviewtheAND,OR,andXORoperators,see
Verilog刷题笔记3
十六追梦记
笔记
题目:ABitofPracticeGivenseveralinputvectors,concatenatethemtogetherthensplitthemupintoseveraloutputvectors.Therearesix5-bitinputvectors:a,b,c,d,e,andf,foratotalof30bitsofinput.Therearefour8-bitoutputvec
Verilog刷题笔记5
十六追梦记
笔记
题目:ABitofPracticeOnecommonplacetoseeareplicationoperatoriswhensign-extendingasmallernumbertoalargerone,whilepreservingitssignedvalue.Thisisdonebyreplicatingthesignbit(themostsignificantbit)ofthesmalle
verilog刷题笔记002
xiaobaibaizzf
fpga开发
对于HDLBitsExams/ece2412013q4题标答是从有限状态机入手,分析电路状态的转换以及输出与状态的关系,然后写出驱动方程和状态方程并以此编写描述语言,代码如下:moduletop_module(inputclk,inputreset,input[3:1]s,outputregfr3,outputregfr2,outputregfr1,outputregdfr);//Givestat
verilog刷题笔记007
xiaobaibaizzf
fpga开发
Fsmhdlc题状态转换图moduletop_module(inputclk,inputreset,//Synchronousresetinputin,outputdisc,outputflag,outputerr);reg[3:0]state;reg[3:0]next_state;always@(*)begincase(state)0:next_state=in?1:0;1:next_state
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