共模抑制比(CMRR) 是指差分放大器对同时加到两个输入端上的共模信号的抑制能力。更确切地说,CMRR是产生特定输出所需输入的共模电压与产生同样输出所需输入的差分电压的比值。
差分放大器共模响应,是指放大器中共模电压Vcm引起的差模电压Vcm_diff。根据CMRR 的定义,设Vcm_diff为差模下对应的电压:
Vo= Vcm_diff× Adiffm= Vcm ×Acm
重新组合公式:
Adiffm/Acm = Vcm/Vcm_diff=CMRR(作为增益比)
显然可得:
CMRR = Vcm/Vcm_diff
其中:Acm为共模增益,Adiffm为差模增益,Vcm_diff为共模电压引起的运放差分偏移,Vcm为共模电压(测试信号)。后一个方程可使我们更为确切地了解CMRR 参数的含义,即CMRR 与放大器的增益和频率无关。
然而在实际电路中,由于电阻或线路的不对称性,共模抑制比比手册中给出的要小。一般正常的情况下,能小到20~60dB。所以,运放内部引起的共模基本忽略不计。主要考虑片外精阻不对称引起的共模偏差。
当输入均是Vcm时,输出Vout的电压值是:
如果R3=R4,R2= R1,共模抑制比会无穷大。放大倍率为1,但如果每个电阻使用0.5%的10K电阻,写个简单的Matlab程序,代码如下:
clc,clear
r1 = 10000;
r2 = 10000;
r3 = 10000;
r4 = 10000;
alpha = 0.5 / 100;
CMmax = -1000;
CMmin = 1000;
Dmax = -1000;
Dmin = 1000;
Kcmrmax = -100000;
Kcmrmin = 100000;
for rr1=[r1*(1-alpha) r1 r1 * (1+alpha)]
for rr2=[r2*(1-alpha) r2 r2 * (1+alpha)]
for rr3=[r3*(1-alpha) r3 r3 * (1+alpha)]
for rr4=[r4*(1-alpha) r4 r4*(1+alpha)]
Cratio = (rr3 * rr2 - rr1 *rr4) / (rr1 + rr3) / rr2;
Dratio = (rr3 * rr2 + rr3 *rr4) / (rr1 + rr3) / rr2;
Kcmr = 20 *log10(abs(Dratio/Cratio));
if (Cratio > CMmax)
CMmax = Cratio;
CMmax_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];
end
if (Cratio < CMmin)
CMmin = Cratio;
CMmin_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];
end
if (Dratio > Dmax)
Dmax = Dratio;
Dmax_ = [rr1 rr2 rr3 rr4 Cratio Dratio Kcmr];
end
if (Dratio < Dmin)
Dmin = Dratio;
Dmin_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];
end
if (Kcmr > Kcmrmax)
Kcmrmax = Kcmr;
Kcmrmax_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];
end
if (Kcmr < Kcmrmin)
Kcmrmin = Kcmr;
Kcmrmin_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];
end
end
end
end
end
format short g;
CMmax_,CMmin_,Dmax_,Dmin_,Kcmrmax_,Kcmrmin_
计算结果:
依次是(r1,r2,r3,r4在电路中的实际值,共模放大率,差模放大率,共模抑制比)
CMmax_ = 9950 10050 10050 9950 0.0099502 1 40.043
CMmin_ = 10050 9950 9950 10050 -0.01005 1 39.956
Dmax_ = 9950 9950 10050 10050 0 1.0101 Inf
Dmin_ =10050 10050 9950 9950 0 0.99005 Inf
Kcmrmax_ =9950 9950 9950 9950 0 1 Inf
Kcmrmin_ =10050 9950 9950 10050 -0.01005 1 39.956
最差的情况下,如果有1V的共模,将在输出端最大产生10mV (或-10mV) 的电压。这里注意,Kcmr计算输出是Inf,是无穷大的意思。实际上当电阻匹配时,共模抑制比很大,但不会无穷大,最多也就是由运放手册提供的CMRR参数决定。这个参数一般在实际工程上是很难达到的。
在实际电路设计中,可以使用高精度万用表测出低漂移的电阻,使得R1=R2, R3=R4,这样,可以是运放的共模抑制比大幅度提升。
1.java验证IP地址:
Pattern pattern = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?! \\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5]) \\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b"); Matcher matcher = pattern.matcher("127.400.600.2"); //以验证127.400.600.2为例 System.out.println(matcher.matches());
2. java验证日期时间,解决润月:
Pattern pattern = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]? ((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\- \\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2} (([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0? [1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))| (0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0- 9])((\\s)|(\\:([0-5]?[0-9])))))?$"); Matcher matcher = pattern.matcher("2000-02-29 23:59:59"); System.out.println(matcher.matches());
3.java验证邮箱格式:
Pattern pattern = Pattern.compile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0 -9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"); Matcher matcher = pattern.matcher("a@aa.com"); System.out.println(matcher.matches());
根据实际开发于2009年9月7日最新统计:
中国电信发布中国3G号码段:中国联通185,186;中国移动188,187;中国电信189,180共6个号段。
3G业务专属的180-189号段已基本分配给各运营商使用, 其中180、189分配给中国电信,187、188归中国
移动使用,185、186属于新联通。
中国移动拥有号码段:139、138、137、136、135、134、159、158、157(3G)、152、151、150、188(
3G)、187(3G);14个号段
中国联通拥有号码段:130、131、132、155、156(3G)、186(3G)、185(3G);6个号段
中国电信拥有号码段:133、153、189(3G)、180(3G);4个号码段
移动:
2G号段(GSM网络)有139,138,137,136,135,134(0-8),159,158,152,151,150
3G号段(TD-SCDMA网络)有157,188,187
147是移动TD上网卡专用号段.
联通:
2G号段(GSM网络)有130,131,132,155,156
3G号段(WCDMA网络)有186,185
电信:
2G号段(CDMA网络)有133,153
3G号段(CDMA网络)有189,180
检验手机号码和邮箱的类
package com.ccit.networld.ccs.common.util; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.log4j.Logger; public class ClassPathResource { private static final Logger logger = Logger.getLogger(ClassPathResource.class); public static boolean isMobileNO(String mobiles){ Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"); Matcher m = p.matcher(mobiles); logger.info(m.matches()+"---"); return m.matches(); } public static boolean isEmail(String email){ String str="^([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)*@([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)+[\\.][A- Za-z]{2,3}([\\.][A-Za-z]{2})?$"; Pattern p = Pattern.compile(str); Matcher m = p.matcher(email); logger.info(m.matches()+"---"); return m.matches(); } public static void main(String[] args) throws IOException { System.out.println(ClassPathResource.isEmail("121212121212@12-12.co-m.cn")); } }
在LINUX里面,设备类型分为:字符设备、块设备以及网络设备, PCI是一种和ISA为一类的总线结构,归属于网络驱动设备~~~
字符设备、块设备主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,而块设备则不然,它利用一块系统内存作为缓冲区,当用户进程对设备请求能满足用户的要求时,就返回请求的数据,如果不能就调用请求函数来进行实际的I/O操作,因此,块设备主要是针对磁盘等慢速设备设计的,以免消耗过多的CPU时间来等待~~~
系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备的一般访问方式。
另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。
这两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘这种设备提供的就是一个数据流,当你敲入"fox" 这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是"f",然后是"o",最后是"x",最终是文件的结束(EOF)。当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容,然后又转去读取别的块的内容,而被读取的块在磁盘上位置不一定要连续,所以说硬盘可以被随机访问,而不是以流的方式被访问,显然它是一个块设备。
内核管理块设备要比管理字符设备细致得多,需要考虑的问题和完成的工作相比字符设备来说要复杂许多。这是因为字符设备仅仅需要控制一个位置—当前位置—而块设备访问的位置必须能够在介质的不同区间前后移动。所以事实上内核不必提供一个专门的子系统来管理字符设备,但是对块设备的管理却必须要有一个专门的提供服务的子系统。不仅仅是因为块设备的复杂性远远高于字符设备,更重要的原因是块设备对执行性能的要求很高;对硬盘每多一分利用都会对整个系统的性能带来提升,其效果要远远比键盘吞吐速度成倍的提高大得多。另外,我们将会看到,块设备的复杂性会为这种优化留下很大的施展空间。
简单来讲,块设备可以随机存取,而字符设备不能随机存取,那裸设备又该如何解释呢?
难道裸设备,如磁盘裸设备也不能随机读取吗?那在数据库中用裸设备建一个2g的数据文件,为了存取最后一个数据块,难道ORACLE还要把前面的所有数据块都读一遍,显然不符合事实,如果这样解释呢,操作系统不能随机读取,并不意味着数据库也不能随机读取。
块设备通过系统缓存进行读取,不是直接和物理磁盘读取。字符设备可以直接物理磁盘读取,不经过系统缓存。(如键盘,直接相应中断)
字符设备是裸设备 通过查看 ll /dev/vg00/ 下的内容 若开头带c字符的则为字符设备
块设备是文件设备 通过查看 ll /dev/vg00/ 下的内容 若开头带b字符的则为块符设备
在使用上,只要在对数据库方面的应用需要考虑是选择快设备还是字符设备。一般数据库厂商会建议你建库时使用裸设备(字符设备),空间管理完全由数据库引擎进行管理,这样所有数据和日志直接写盘,当发生系统故障时,系统安全性较强,不至于丢失数据。但还有一种说法是使用块设备便于管理维护人员的系统管理,因为使用裸设备在第一次分配出去之后,这个设备的空间就不能做任何其他用途了,但块设备则不然,你想使用多少空间就分配多少,你可以进行自由的扩展,而无需一次性的全部分配出去。所以我建议在创建数据库master库使用裸设备,而业务数据库及tempdb则使用块设备。