Verilog设计练习十例及答案

Verilog设计练习十例及答案
Verilog设计练习十例及答案

设计练习进阶

前言:

在前面九章学习的基础上,通过本章的练习,一定能逐步掌握Verilog HDL设计的要点。我们可以先理解样板模块中每一条语句的作用,然后对样板模块进行综合前和综合后仿真,再独立完成每一阶段规定的练习。当十个阶段的练习做完后,便可以开始设计一些简单的逻辑电路和系统。很快我们就能过渡到设计相当复杂的数字逻辑系统。当然,复杂的数字逻辑系统的设计和验证,不但需要系统结构的知识和经验的积累,还需要了解更多的语法现象和掌握高级的Verilog HDL系统任务,以及与C语言模块接口的方法(即PLI),这些已超出的本书的范围。有兴趣的同学可以阅读Verilog语法参考资料和有关文献,自己学习,我们将在下一本书中介绍Verilog较高级的用法。

练习一.简单的组合逻辑设计

目的: 掌握基本组合逻辑电路的实现方法。

这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign 结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。

模块源代码:

//--------------- compare.v -----------------

module compare(equal,a,b);

input a,b;

output equal;

assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,

//equal输出为0。

endmodule

测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。

测试模块源代码:

`timescale 1ns/1ns //定义时间单位。

`include "./compare.v" //包含模块文件。在有的仿真调试环境中并不需要此语句。

//而需要从调试环境的菜单中键入有关模块文件的路径和名称

module comparetest;

reg a,b;

wire equal;

initial //initial常用于仿真时信号的给出。

266

begin

a=0;

b=0;

#100 a=0; b=1;

#100 a=1; b=1;

#100 a=1; b=0;

#100 $stop; //系统任务,暂停仿真以便观察仿真波形。

end

compare compare1(.equal(equal),.a(a),.b(b)); //调用模块。

endmodule

仿真波形(部分):

练习:

设计一个字节(8位)比较器。

要求:比较两个字节的大小,如a[7:0]大于 b[7:0]输出高电平,否则输出低电平,改写测试模型,使其能进行比较全面的测试。

练习二. 简单时序逻辑电路的设计

目的:掌握基本时序逻辑电路的实现。

在Verilog HDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。在可综合的Verilog HDL模型,我们通常使用always块和 @(posedge clk)或 @(negedge clk)的结构来表述时序逻辑。下面是一个1/2分频器的可综合模型。

// half_clk.v:

module half_clk(reset,clk_in,clk_out);

input clk_in,reset;

output clk_out;

reg clk_out;

always @(posedge clk_in)

267

begin

if(!reset) clk_out=0;

else clk_out=~clk_out;

end

endmodule

在always块中,被赋值的信号都必须定义为reg型,这是由时序逻辑电路的特点所决定的。对于reg型数据,如果未对它进行赋值,仿真工具会认为它是不定态。为了能正确地观察到仿真结果,在可综合风格的模块中我们通常定义一个复位信号reset,当reset为低电平时,对电路中的寄存器进行复位。

测试模块的源代码:

//------------------- clk_Top.v -----------------------------

`timescale 1ns/100ps

`define clk_cycle 50

module clk_Top.v

reg clk,reset;

wire clk_out;

always #`clk_cycle clk = ~clk;

initial

begin

clk = 0;

reset = 1;

#100 reset = 0;

#100 reset = 1;

#10000 $stop;

end

half_clk half_clk(.reset(reset),.clk_in(clk),.clk_out(clk_out));

endmodule

仿真波形:

268

练习:依然作clk_in的二分频clk_out,要求输出与上例的输出正好反相。编写测试模块,给出仿真波形。

练习三. 利用条件语句实现较复杂的时序逻辑电路

目的:掌握条件语句在Verilog HDL中的使用。

与常用的高级程序语言一样,为了描述较为复杂的时序关系,Verilog HDL提供了条件语句供分支判断时使用。在可综合风格的Verilog HDL模型中常用的条件语句有if…else和case…endcase两种结构,用法和C程序语言中类似。两者相较,if…else用于不很复杂的分支关系,实际编写可综合风格的模块、特别是用状态机构成的模块时,更常用的是case…endcase风格的代码。这一节我们给的是有关if…else的范例,有关case…endcase 结构的代码已后会经常用到。

下面给出的范例也是一个可综合风格的分频器,是将10M的时钟分频为500K的时钟。基本原理与1/2分频器是一样的,但是需要定义一个计数器,以便准确获得1/20分频

模块源代码:

// --------------- fdivision.v -----------------------------

module fdivision(RESET,F10M,F500K);

input F10M,RESET;

output F500K;

reg F500K;

reg [7:0]j;

always @(posedge F10M)

if(!RESET) //低电平复位。

begin

F500K <= 0;

j <= 0;

end

else

begin

if(j==19) //对计数器进行判断,以确定F500K信号是否反转。

begin

j <= 0;

F500K <= ~F500K;

end

else

j <= j+1;

end

endmodule

269

测试模块源代码:

//--------------- fdivision_Top.v ------------------------

`timescale 1ns/100ps

`define clk_cycle 50

module division_Top;

reg F10M_clk,RESET;

wire F500K_clk;

always #`clk_cycle F10M_clk = ~ F10M_clk;

initial

begin

RESET=1;

F10M=0;

#100 RESET=0;

#100 RESET=1;

#10000 $stop;

end

fdivision fdivision (.RESET(RESET),.F10M(F10M_clk),.F500K(F500K_clk)); endmodule

仿真波形:

练习:利用10M的时钟,设计一个单周期形状如下的周期波形。

练习四. 设计时序逻辑时采用阻塞赋值与非阻塞赋值的区别

270

目的:1.明确掌握阻塞赋值与非阻塞赋值的概念和区别;

2.了解阻塞赋值的使用情况。

阻塞赋值与非阻塞赋值,在教材中我们已经了解了它们之间在语法上的区别以及综合后所得到的电路结构上的区别。在always块中,阻塞赋值可以理解为赋值语句是顺序执行的,而非阻塞赋值可以理解为赋值语句是并发执行的。实际的时序逻辑设计中,一般的情况下非阻塞赋值语句被更多地使用,有时为了在同一周期实现相互关联的操作,也使用了阻塞赋值语句。(注意:在实现组合逻辑的assign结构中,无一例外地都必须采用阻塞赋值语句。

下例通过分别采用阻塞赋值语句和非阻塞赋值语句的两个看上去非常相似的两个模块blocking.v和non_blocking.v来阐明两者之间的区别。

模块源代码:

// ------------- blocking.v ---------------

module blocking(clk,a,b,c);

output [3:0] b,c;

input [3:0] a;

input clk;

reg [3:0] b,c;

always @(posedge clk)

begin

b = a;

c = b;

$display("Blocking: a = %d, b = %d, c = %d.",a,b,c);

end

endmodule

//------------- non_blocking.v -------------------

module non_blocking(clk,a,b,c);

output [3:0] b,c;

input [3:0] a;

input clk;

reg [3:0] b,c;

always @(posedge clk)

begin

b <= a;

c <= b;

$display("Non_Blocking: a = %d, b = %d, c = %d.",a,b,c);

end

271

endmodule

测试模块源代码:

//------------- compareTop.v -----------------------------

`timescale 1ns/100ps

`include "./blocking.v"

`include "./non_blocking.v"

module compareTop;

wire [3:0] b1,c1,b2,c2;

reg [3:0] a;

reg clk;

initial

begin

clk = 0;

forever #50 clk = ~clk;

end

initial

begin

a = 4'h3;

$display("____________________________");

# 100 a = 4'h7;

$display("____________________________");

# 100 a = 4'hf;

$display("____________________________");

# 100 a = 4'ha;

$display("____________________________");

# 100 a = 4'h2;

$display("____________________________");

# 100 $display("____________________________");

$stop;

end

non_blocking non_blocking(clk,a,b2,c2);

blocking blocking(clk,a,b1,c1);

endmodule

272

仿真波形(部分):

思考:在blocking模块中按如下写法,仿真与综合的结果会有什么样的变化?作出仿真波形,分析综合结果。

1. always @(posedge clk)

begin

c = b;

b = a;

end

2.always @(posedge clk) b=a;

always @(posedge clk) c=b;

练习五. 用always块实现较复杂的组合逻辑电路

目的: 1.掌握用always实现组合逻辑电路的方法;

2.了解assign与always两种组合逻辑电路实现方法之间的区别。

仅使用assign结构来实现组合逻辑电路,在设计中会发现很多地方会显得冗长且效率低下。而适当地采用always来设计组合逻辑,往往会更具实效。已进行的范例和练习中,我们仅在实现时序逻辑电路时使用always块。从现在开始,我们对它的看法要稍稍改变。

下面是一个简单的指令译码电路的设计示例。该电路通过对指令的判断,对输入数据执行相应的操作,包括加、减、与、或和求反,并且无论是指令作用的数据还是指令本身发生变化,结果都要作出及时的反应。显然,这是一个较为复杂的组合逻辑电路,如果采用assign 语句,表达起来非常复杂。示例中使用了电平敏感的always块,所谓电平敏感的触发条件是指在@后的括号内电平列表中的任何一个电平发生变化,(与时序逻辑不同,它在@后的括号内没有沿敏感关键词,如posedge 或negedge)就能触发always块的动作,并且运用了case 结构来进行分支判断,不但设计思想得到直观的体现,而且代码看起来非常整齐、便于理解。//--------------- alu.v --------------------------

`define plus 3'd0

`define minus 3'd1

`define band 3'd2

`define bor 3'd3

`define unegate 3'd4

module alu(out,opcode,a,b);

273

output[7:0] out;

reg[7:0] out;

input[2:0] opcode;

input[7:0] a,b; //操作数。

always@(opcode or a or b) //电平敏感的always块

begin

case(opcode)

`plus: out = a+b; //加操作。

`minus: out = a-b; //减操作。

`band: out = a&b; //求与。

`bor: out = a|b; //求或。

`unegate: out=~a; //求反。

default: out=8'hx;//未收到指令时,输出任意态。

endcase

end

endmodule

同一组合逻辑电路分别用always块和连续赋值语句assign描述时,代码的形式大相径庭,但是在always中适当运用default(在case结构中)和else(在if…else结构中),通常可以综合为纯组合逻辑,尽管被赋值的变量一定要定义为reg型。不过,如果不使用default或else对缺省项进行说明,则易生成意想不到的锁存器,这一点一定要加以注意。

指令译码器的测试模块源代码:

//------------- alu_Top.v -----------------

`timescale 1ns/1ns

`include "./alu.v"

module alutest;

wire[7:0] out;

reg[7:0] a,b;

reg[2:0] opcode;

parameter times=5;

initial

begin

a={$random}%256; //Give a radom number blongs to [0,255] .

b={$random}%256; //Give a radom number blongs to [0,255].

opcode=3'h0;

repeat(times)

begin

#100 a={$random}%256; //Give a radom number.

b={$random}%256; //Give a radom number.

opcode=opcode+1;

end

274

#100 $stop;

end

alu alu1(out,opcode,a,b);

endmodule

仿真波形(部分):

练习:运用always块设计一个八路数据选择器。要求:每路输入数据与输出数据均为4位2进制数,当选择开关(至少3位)或输入数据发生变化时,输出数据也相应地变化。

练习六. 在Verilog HDL中使用函数

目的:掌握函数在模块设计中的使用。

与一般的程序设计语言一样,Veirlog HDL也可使用函数以适应对不同变量采取同一运算的操作。Veirlog HDL函数在综合时被理解成具有独立运算功能的电路,每调用一次函数相当于改变这部分电路的输入以得到相应的计算结果。

下例是函数调用的一个简单示范,采用同步时钟触发运算的执行,每个clk时钟周期都会执行一次运算。并且在测试模块中,通过调用系统任务$display在时钟的下降沿显示每次计算的结果。

模块源代码:

module tryfunct(clk,n,result,reset);

output[31:0] result;

input[3:0] n;

input reset,clk;

reg[31:0] result;

always @(posedge clk) //clk的上沿触发同步运算。

begin

if(!reset) //reset为低时复位。

result<=0;

else

begin

275

result <= n * factorial(n)/((n*2)+1);

end

e nd

function [31:0] factorial; //函数定义。

input [3:0] operand;

reg [3:0] index;

begin

factorial = operand ? 1 : 0;

for(index = 2; index <= operand; index = index + 1)

factorial = index * factorial;

end

endfunction

endmodule

测试模块源代码:

`include "./step6.v"

`timescale 1ns/100ps

`define clk_cycle 50

module tryfuctTop;

reg[3:0] n,i;

reg reset,clk;

wire[31:0] result;

initial

begin

n=0;

reset=1;

clk=0;

#100 reset=0;

#100 reset=1;

for(i=0;i<=15;i=i+1)

begin

#200 n=i;

end

#100 $stop;

end

always #`clk_cycle clk=~clk;

276

tryfunct tryfunct(.clk(clk),.n(n),.result(result),.reset(reset));

endmodule

上例中函数factorial(n)实际上就是阶乘运算。必须提醒大家注意的是,在实际的设计中,我们不希望设计中的运算过于复杂,以免在综合后带来不可预测的后果。经常的情况是,我们把复杂的运算分成几个步骤,分别在不同的时钟周期完成。

仿真波形(部分):

练习:设计一个带控制端的逻辑运算电路,分别完成正整数的平方、立方和阶乘的运算。编写测试模块,并给出仿真波形。

练习七. 在Verilog HDL中使用任务(task)

目的:掌握任务在结构化Verilog HDL设计中的应用。

仅有函数并不能完全满足Veirlog HDL中的运算需求。当我们希望能够将一些信号进行运算并输出多个结果时,采用函数结构就显得非常不方便,而任务结构在这方面的优势则十分突出。任务本身并不返回计算值,但是它通过类似C语言中形参与实参的数据交换,非常快捷地实现运算结果的调用。此外,我们还常常利用任务来帮助我们实现结构化的模块设计,将批量的操作以任务的形式独立出来,这样设计的目的通常一眼看过去就很明了。

下面是一个利用task和电平敏感的always块设计比较后重组信号的组合逻辑的实例。可以看到,利用task非常方便地实现了数据之间的交换,如果要用函数实现相同的功能是非常复杂的;另外,task也避免了直接用一般语句来描述所引起的不易理解和综合时产生冗余逻辑等问题。

模块源代码:

//----------------- sort4.v ------------------

module sort4(ra,rb,rc,rd,a,b,c,d);

output[3:0] ra,rb,rc,rd;

input[3:0] a,b,c,d;

reg[3:0] ra,rb,rc,rd;

reg[3:0] va,vb,vc,vd;

always @ (a or b or c or d)

begin

277

{va,vb,vc,vd}={a,b,c,d};

sort2(va,vc); //va 与vc互换。

sort2(vb,vd); //vb 与vd互换。

sort2(va,vb); //va 与vb互换。

sort2(vc,vd); //vc 与vd互换。

sort2(vb,vc); //vb 与vc互换。

{ra,rb,rc,rd}={va,vb,vc,vd};

end

task sort2;

inout[3:0] x,y;

reg[3:0] tmp;

if(x>y)

begin

tmp=x; //x与y变量的内容互换,要求顺序执行,所以采用阻塞赋值方式。 x=y;

y=tmp;

end

endtask

endmodule

值得注意的是task中的变量定义与模块中的变量定义不尽相同,它们并不受输入输出类型的限制。如此例,x与y对于task sort2来说虽然是inout型,但实际上它们对应的是always 块中变量,都是reg型变量。

测试模块源代码:

`timescale 1ns/100ps

`include "sort4.v"

module task_Top;

reg[3:0] a,b,c,d;

wire[3:0] ra,rb,rc,rd;

initial

begin

a=0;b=0;c=0;d=0;

repeat(5)

begin

#100 a ={$random}%15;

b ={$random}%15;

c ={$random}%15;

d ={$random}%15;

end

278

#100 $stop;

sort4 sort4 (.a(a),.b(b),.c(c),.d(d), .ra(ra),.rb(rb),.rc(rc),.rd(rd)); endmodule

仿真波形(部分):

练习:设计一个模块,通过任务完成3个8位2进制输入数据的冒泡排序。要求:时钟触发任务的执行,每个时钟周期完成一次数据交换的操作。

练习八. 利用有限状态机进行复杂时序逻辑的设计

目的:掌握利用有限状态机实现复杂时序逻辑的方法;

在数字电路中我们已经学习过通过建立有限状态机来进行数字逻辑的设计,而在Verilog HDL硬件描述语言中,这种设计方法得到进一步的发展。通过Verilog HDL提供的语句,我们可以直观地设计出适合更为复杂的时序逻辑的电路。关于有限状态机的设计方法在教材中已经作了较为详细的阐述,在此就不赘述了。

下例是一个简单的状态机设计,功能是检测一个5位二进制序列“10010”。考虑到序列重叠的可能,有限状态机共提供8个状态(包括初始状态IDLE)。

模块源代码:

seqdet.v

module seqdet(x,z,clk,rst,state);

input x,clk,rst;

output z;

output[2:0] state;

reg[2:0] state;

wire z;

279

parameter IDLE='d0, A='d1, B='d2,

C='d3, D='d4,

E='d5, F='d6,

G='d7;

assign z = ( state==E && x==0 )? 1 : 0; //当x=0时,状态已变为E,

//状态为D时,x仍为1。因此

//输出为1的条件为( state==E && x==0 )。

always @(posedge clk)

if(!rst)

begin

state <= IDLE;

end

else

casex(state)

IDLE : if(x==1)

begin

state <= A;

end

A: if(x==0)

begin

state <= B;

end

B: if(x==0)

begin

state <= C;

end

else

begin

state <= F;

end

C: if(x==1)

begin

state <= D;

end

else

begin

state <= G;

end

D: if(x==0)

begin

state <= E;

280

第十章.设计练习进阶

end

else

begin

state <= A;

end

E: if(x==0)

begin

state <= C;

end

else

begin

state <= A;

end

F: if(x==1)

begin

state <= A;

end

else

begin

state <= B;

end

G: if(x==1)

begin

state <= F;

end

default:state=IDLE; //缺省状态为初始状态。

endcase

endmodule

测试模块源代码:

//------------------ seqdet.v -------------------

`timescale 1ns/1ns

`include "./seqdet.v"

module seqdet_Top;

reg clk,rst;

reg[23:0] data;

wire[2:0] state;

wire z,x;

assign x=data[23];

always #10 clk = ~clk;

always @(posedge clk)

data={data[22:0],data[23]};

initial

281

begin

clk=0;

rst=1;

#2 rst=0;

#30 rst=1;

data ='b1100_1001_0000_1001_0100;

#500 $stop;

end

seqdet m(x,z,clk,rst,state);

endmodule

仿真波形:

练习:设计一个串行数据检测器。要求是:连续4个或4个以上的1时输出为1,其他输入情况下为0。编写测试模块并给出仿真波形。

练习九.利用状态机的嵌套实现层次结构化设计

目的:1.运用主状态机与子状态机产生层次化的逻辑设计;

2.在结构化设计中灵活使用任务(task)结构。

在上一节,我们学习了如何使用状态机的实例。实际上,单个有限状态机控制整个逻辑电路的运转在实际设计中是不多见,往往是状态机套用状态机,从而形成树状的控制核心。这一点也与我们提倡的层次化、结构化的自顶而下的设计方法相符,下面我们就将提供一个这样的示例以供大家学习。

该例是一个简化的EPROM的串行写入器。事实上,它是一个EPROM读写器设计中实现写功能的部分经删节得到的,去除了EPROM的启动、结束和EPROM控制字的写入等功能,只具备这样一个雏形。工作的步骤是:1.地址的串行写入;2.数据的串行写入;3.给信号源应答,信号源给出下一个操作对象;4.结束写操作。通过移位令并行数据得以一位一位输出。

模块源代码:

282

module writing(reset,clk,address,data,sda,ack);

input reset,clk;

input[7:0] data,address;

output sda,ack; //sda负责串行数据输出;

//ack是一个对象操作完毕后,模块给出的应答信号。

reg link_write; //link_write决定何时输出。

reg[3:0] state; //主状态机的状态字。

reg[4:0] sh8out_state; //从状态机的状态字。

reg[7:0] sh8out_buf; //输入数据缓冲。

reg finish_F; //用以判断是否处理完一个操作对象。

reg ack;

parameter

idle=0,addr_write=1,data_write=2,stop_ack=3;

parameter

bit0=1,bit1=2,bit2=3,bit3=4,bit4=5,bit5=6,bit6=7,bit7=8;

assign sda = link_write? sh8out_buf[7] : 1'bz;

always @(posedge clk)

begin

i f(!reset) //复位。

begin

link_write<= 0;

state <= idle;

finish_F <= 0;

sh8out_state<=idle;

ack<= 0;

sh8out_buf<=0;

end

e lse

case(state)

idle:

begin

l ink_write <= 0;

state <= idle;

finish_F <= 0;

sh8out_state<=idle;

ack<= 0;

sh8out_buf<=address;

state <= addr_write;

end

283

第十章.设计练习进阶

addr_write: //地址的输入。

begin

i f(finish_F==0)

begin shift8_out; end

e lse

begin

sh8out_state <= idle;

sh8out_buf <= data;

state <= data_write;

finish_F <= 0;

end

end

data_write: //数据的写入。

begin

i f(finish_F==0)

begin shift8_out; end

e lse

begin

link_write <= 0;

state <= stop_ack;

finish_F <= 0;

ack <= 1;

end

end

stop_ack: //完成应答。

begin

ack <= 0;

state <= idle;

end

endcase

end

task shift8_out; //串行写入。

begin

case(sh8out_state)

idle:

begin

link_write <= 1;

sh8out_state <= bit0;

284

end

bit0:

begin

link_write <= 1;

sh8out_state <= bit1;

sh8out_buf <= sh8out_buf<<1;

end

bit1:

begin

sh8out_state<=bit2;

sh8out_buf<=sh8out_buf<<1;

end

bit2:

begin

sh8out_state<=bit3;

sh8out_buf<=sh8out_buf<<1;

end

bit3:

begin

sh8out_state<=bit4;

sh8out_buf<=sh8out_buf<<1;

end

bit4:

begin

sh8out_state<=bit5;

sh8out_buf<=sh8out_buf<<1;

end

bit5:

begin

sh8out_state<=bit6;

sh8out_buf<=sh8out_buf<<1;

end

bit6:

begin

sh8out_state<=bit7;

sh8out_buf<=sh8out_buf<<1;

end

285

小学语文二年级下册阅读题训练

1、乌鸦兄弟 乌鸦兄弟俩同住在一个窝里。 有一天,窝破了一个洞。 大乌鸦想:“老二会去修的。” 小乌鸦想:“老大会去修的。” 结果谁也没去修。后来洞越来越大了。 大乌鸦想:“这一下老二一定会去修了,难道窝这样破了,它还能住吗” 小乌鸦想:“这一下老大一定会去修了,难道窝这样破了,它还能住吗” 结果又是谁也没有去修。 一直到了寒冷的冬天,西北风呼呼地刮着,大雪纷纷地飘落。乌鸦兄弟俩都蜷缩在破窝里,哆嗦地叫着:“冷啊!冷啊!” 大乌鸦想:“这样冷的天气,老二一定耐不住,它会去修了。” 小乌鸦想:“这样冷的天气,老大还耐得住吗它一定会去修了。” 可是谁也没有动手,只是把身子蜷缩得更紧些。 风越刮越凶,雪越下越大。 结果,窝被风吹到地上,两只乌鸦都冻僵了。 1、一开始,这个洞大吗 2、为什么兄弟俩都不修 补 3、由于都不修补它们窝的破洞,最终兄弟俩怎样 了 4、请找出文中描写寒冷冬天的句子: 2、 春天的田野真美啊!柳树发芽了。桃树开了花。青青的小草悄悄地从泥土里钻出来,地上像插遍了密密的松针。金黄的油菜花,引得蜜蜂来回地飞舞。 1、这段话主要写了 ()的景色。 2、这段话中表示颜色的词有()、

()。 3、把这段话中比喻的句子勾出来。 3、 动物的尾巴各有各的用处。鱼的尾巴像船上的舵,鱼儿游动时,靠尾巴掌握前进的方向。牛的尾巴好比一条长鞭子,夏天用尾巴赶走叮在背上的苍蝇和蚊子。 1、这段话主要讲了 ()。 2、鱼尾巴的用处是 ( )。 3、牛尾巴的用处是 ( )。 4、 蚂蚁整天辛勤的劳动,没有一个偷懒的。它们很团结,见了面就相互摇着触角打招呼。我很喜欢它们,有时候捉虫子给它们吃。 1、这段话中的“它们”指的是 ()。 2、“我”喜欢它们的原因:一是它们 ();二是它们 (); 3、“我”喜欢它们表现在:( )。 5 公鸡和兔子、鸭子是邻居。 一天中午,兔子向公鸡借个盆,公鸡说:“我自己要用,不借。” 傍晚,突然刮起了大风,下起了大雨。公鸡的屋顶被大风吹掉了。它急的又叫又跳。兔子、鸭子听见了公鸡的叫声,都放下了手里的活,跑来帮公鸡抢修屋顶。风停了,雨停了,屋顶修好了。 公鸡看看修好的屋顶,再看看满身泥浆的兔子、鸭子、公鸡脸红了。

高速电路设计的经典案例

该文章版权归 smarteebit 所有。若有疑问,请联系 songmin2@https://www.360docs.net/doc/8e14884934.html,
高速数字设计的经典案例若干则
【摘要】 随着这些年半导体工艺突飞猛进的发展, “高速数字设计”对广大硬件工程师来说,已经不再是一 个陌生的词。从航空、雷达到汽车电子,从无线通信到有线接入,甚至在一些低端的嵌入式系统上,高 速数字电路都已经在大行其道。 目前行业内已经有不少关于高速数字电路理论的好文章, 笔者就不在这 上面掺和了。 本文着眼于理论和实际相结合, 所用的素材都来自笔者亲历过的案例, 相信活生生的事实, 比空洞的理论更有说服力,也希望能使入行不久的硬件工程师们得到他们想要的信息,今后少走弯路。 由于不会对理论作过多的阐述, 因此, 本文的阅读对象应该具有一点点高速数字设计的理论基础, 请知。 【关键词】 高速数字设计 高速数字电路 案例
1 信号完整性
什么词汇在高速数字设计中出现得最多?对了,SI(Signal Integrity),也就是信号完整性。信 号完整性问题的表现形式多种多样,主要有如下种类:
图 1 过冲(OVERSHOOT)
图 2 振铃(RING)
图 3 非单调性(NON MONOTONIC)
过冲: 当较快的信号沿驱动一段较长的走线, 而走线拓扑上又没有有效的匹配时, 往往会产生过冲。 过冲带来的问题主要是“1”电平高于接收端器件的输入最大电压值(VIHmax),或“0”电平低于接收端 器件的输入最小电压值(VILmin),这样可能给器件带来潜在的累积性伤害,缩短其工作寿命,从而影响 产品的长期稳定性。
Smarteebit
Page 1 of 17

_工程实训参考答案(完整版)

昆明理工大学 制造技术工程实训 实习报告答案 Edited by XiaoXiong 2012/05 专业_______________ 班级_______________ 学号_______________ 姓名_______________ 说明:本答案是经本人参考《制造技术工程实训》一书,总结并整理的,希望对大家有所帮助。其中如果读者发现有错的地方,欢迎批评指正。 制造技术工程实训

实习报告 一、工程材料基础知识 (一)工程材料 1、工程材料按其性能可分为结构材料和功能材料。前者通常以力学性能为主,兼有一定的物理、化学、性能。而后者是以特殊物理化学性能为主的功能材料。工程上通常按化学分类法对工程材料进行分类,可分为金属材料、陶瓷材料、高分子材料、复合材料。 2、组成合金的结构形式有固溶体、金属化合物、机械混合物三种。刚和铁的基本组成元素是铁和碳,统称为铁碳合金,其中碳含量大于2.11%为铁,小于2.11%为钢。 3、何为碳素钢、合金钢和铸铁?分别说明其特点? 碳素钢是指碳含量小于2.11%和含有少量硅、锰、硫、磷等杂质元素所组成的铁碳合金,简称碳钢;合金钢是在碳钢的基础上加入其它金属(如硅、锰、铬、镍等)元素的铁碳合金;铸铁是含碳量大于2.11%的铁碳合金。 碳素钢价格低廉,工艺性好,广发应用与机械制造中;合金钢按加入合金元素的不同,具有不同的性能(高耐磨性、耐蚀性、耐低温、高磁性等),按用途可分为结构钢、特殊性能钢;铸铁按其碳的存在形态可分为灰口铸铁和百口铸铁。 4、常用的非金属材料有哪几类?各有何性能特点?

常用的非金属材料有种:工程塑料、复合材料、工业橡胶、工业陶瓷等。 工程塑料具有密度小、耐腐蚀、耐磨减模型好、良好的绝缘性能以及成型性等优点,此外还有强度硬度较低、耐热性差、易老化和儒变等缺点; 复合材料具有较高的比强度和比模量、较好的疲劳强度、耐蚀、耐热、耐磨、减震的特点; 工业陶瓷:高硬度、高耐磨、高弹性模量、高抗压强度、高熔点、耐高温、耐腐蚀、脆性大等特点; 合成橡胶:耐热、耐磨、耐老化;耐寒;耐臭氧 (二)材料处理技术 1、热处理工艺主要是通过控制加热、保温、冷却,从而改变材料的表面或内部组织结构,最终达到改善工件的工艺性能和使用性能的目的。常用的热处理方法有:退火、正火、回火、淬火、调质。 2、说明一下热处理工艺的主要目的: 退火:降低硬度,改善切削加工性能;消除残余应力,稳定尺寸;减少变形与裂纹倾向细化晶粒,调整组织,消除组织缺陷。 回火:消除工件淬火产生的残余应力,防止变形与开裂,调节性能获得工艺所求力学性能和加工性能,稳定组织与尺

verilog综合心得

综合:不可综合的运算符:= = = ,!= =,/(除法),%(取余数)。 1、不使用初始化语句。 2、不使用带有延时的描述。 3、不使用循环次数不确定的循环语句,如:forever、while等。 4、尽量采用同步方式设计电路。 5、除非是关键路径的设计,一般不调用门级元件来描述设计的方法,建议采用行为语句来完成设计。 6、用always过程块描述组合逻辑,应在信号敏感列表中列出所有的输入信号。 7、所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位。 8、在verilog模块中,任务(task)通常被综合成组合逻辑的形式,每个函数(function)在调用时通常也被综合为一个独立的组合电路模块。 9、用户自定义原语(UDP)是不可综合的,它只能用来建立门级元件的仿真模型。 一般综合工具支持的V erilog HDL结构

移位运算符:V erilog HDL提供向右(>>)及向左(<<)两种运算符,运算符高位或地位一旦移出即予丢弃,其空缺的位则予以补零。 连续赋值语句(assign)、case语句、if…else语句都是可以综合的 initial 语句内若包含有多个语句时,必须以begin end 作聚合;单一的初值赋值,因此并不需以begin end做聚合。 循环(Loops)并不能单独地在程序中存在,而必须在initial和always块中才能使用。initial过程块中的语句仅执行一次,而always块中的语句是不断重复执行的。 编写顶层模块的注意事项 每个端口除了要声明是输入、输出还是双向外,还要声明其数据类型,是连线型(wire)还是寄存器型(reg),如果没有声明则综合器默认为wire型。 1、输入和双向端口不能声明为寄存器型。 2、在测试模块中不需要定义端口。 编写testbentch所归纳的心得

数字电路设计实例

数字电路综合设计案例 8.1 十字路口交通管理器 一、要求 设计一个十字路口交通管理器,该管理器自动控制十字路口两组红、黄、绿三色交通灯,指挥各种车辆和行人安全通过。 二、技术指标 1、交通管理器应能有效操纵路口两组红、黄、绿灯,使两条交叉道路上的车辆交替通行,每次通行时间按需要和实际情况设定。 2、在某条道路上有老人、孩子或者残疾人需要横穿马路时,他们可以举旗示意, 执勤人员按动路口设置的开关,交通管理器接受信号,在路口的通行方向发生转换时,响应上述请求信号,让人们横穿马路,这条道上的车辆禁止通行,即管理这条道路的红灯亮。 3、横穿马路的请求结束后,管理器使道口交通恢复交替通行的正常状态。 三、设计原理和过程: 本课题采用自上而下的方法进行设计。 1.确定交通管理器逻辑功能 ⑴、十字路口每条道路各有一组红、黄、绿灯,用以指挥车辆和行人有序地通行。其中红灯亮表示该条道路禁止通行;黄灯亮表示停车;绿灯亮表示通行。因此,十字路口车辆运行情况有以下几种可能: ①甲道通行,乙道禁止通行; ②甲道停车线以外的车辆禁止通行(必须停车),乙道仍然禁止通行,以便让甲道停车线以内的车辆安全通过; ③甲道禁止通行,乙道通行; ④甲道仍然不通行,乙道停车线以外的车辆必须停车,停车线以内的车辆顺利通行。 ⑵、每条道路的通车时间(也可看作禁止通行时间)为30秒~2分钟,可视需要和实际情况调整,而每条道路的停车时间即黄灯亮的时间为5秒~10秒,且也可调整。 ⑶、响应老人、孩子或残疾人特殊请求信号时,必须在一次通行—禁止情况完毕后, 阻止要求横穿的那条马路上车辆的通行。换句话说,使另一条道路增加若干通行时间。 设S1和S2分别为请求横穿甲道和乙道的手控开关,那么,响应S1或S2的时间必定在甲道通乙道禁止或甲道禁止乙道通两种情况结束时,且不必过黄灯的转换。这种规定是为了简化设计。 由上述逻辑功能,画出交通管理器的示意图如图8-1所示,它的简单逻辑流程图如图8-2所示。示意图中甲道的红、黄、绿灯分别用R、Y、G表示,而乙道的红、黄、绿灯分别用r、y、g表示。简单逻辑流程图中设定通行(禁止)时间为60秒,停车时间为10秒。

工程训练B比较全的答案.

制造技术工程实训 实习报告 参考答案 一、工程材料基础知识 (一)工程材料 1、工程材料按其性能可分为结构材料和功能材料。前者通常以力学性能为主,兼有一定的物理、化学、性能。而后者是以特殊物理化学性能为主的功能材料。工程上通常按化学分类法对工程材料进行分类,可分为金属材料、陶瓷材料、高分子材料、复合材料。 2、组成合金的结构形式有固溶体、金属化合物、机械混合物三种。刚和铁的基本组成元素是铁和碳,统称为铁碳合金,其中碳含量大于2.11%为铁,小于2.11%为钢。 3、碳素钢是指碳含量小于2.11%和含有少量硅、锰、硫、磷等杂质元素所组成的铁碳合金,简称碳钢;合金钢是在碳钢的基础上加入其它金属(如硅、锰、铬、镍等)元素的铁碳合金;铸铁是含碳量大于2.11%的铁碳合金。碳素钢价格低廉,工艺性好,广发应用与机械制造中;合金钢按加入合金元素的不同,具有不同的性能(高耐磨性、耐蚀性、耐低温、高磁性等),按用途可分为结构钢、特殊性能钢;铸铁按其碳的存在形态可分为灰口铸铁和百口铸铁。

4、常用的非金属材料有种:工程塑料、复合材料、工业橡胶、工业陶瓷等。 工程塑料具有密度小、耐腐蚀、耐磨减模型好、良好的绝缘性能以及成型性等优点,此外还有强度硬度较低、耐热性差、易老化和儒变等缺点; 复合材料具有较高的比强度和比模量、较好的疲劳强度、耐蚀、耐热、耐磨、减震的特点; 工业陶瓷:高硬度、高耐磨、高弹性模量、高抗压强度、高熔点、耐高温、耐腐蚀、脆性大等特点; 合成橡胶:耐热、耐磨、耐老化;耐寒;耐臭氧 (二)材料处理技术 1、热处理工艺主要是通过控制加热温度、保温时间、冷却速度,从而改变材料的表面或内部组织结构,最终达到改善工件的工艺性能和使用性能的目的。常用的热处理方法有:退火、正火、回火、淬火、调质。 2、说明一下热处理工艺的主要目的: 退火:降低硬度,改善切削加工性能;消除残余应力,稳定尺寸;减少变形与裂纹倾向细化晶粒,调整组织,消除组织缺陷。 回火:消除工件淬火产生的残余应力,防止变形与开裂,调节性能获得工艺所求力学性能和加工性能,稳定组织与尺

语文二年级下册阅读练习

1、“天鹅蛋” 一天,松鼠妈妈带着一群小松鼠到山坡下找吃的。它们走啊走,来到一条小溪边,看到许许多多又光又圆的蛋,小松鼠们高兴得又蹦又跳,又喊又叫:“啊!天鹅蛋!” 松鼠妈妈说:“快,快把天鹅蛋搬回家去。”小松鼠们立即行动。有的用手棒,有的用绳子捆住蛋背在背上,有的抱着蛋在地上滚,还有的两只小松鼠一起抬,哼唷哼唷,把天鹅蛋搬回了家。大家累得满头大汗,松鼠妈妈说:“这一下我们可以吃得饱饱的了。” 小松鼠忙得团团转,有的拿着盘子把蛋一个一个放在盘子上,有的拿叉子叉蛋,还有的拿小刀砍蛋,可是它们怎么也敲不开天鹅蛋。松鼠妈妈拿来了一把斧头,用力向天鹅蛋砸去,只听见发出乒乒乓乓的声音,天鹅蛋还是又光又圆,可蛋下面的盘子给砸碎了。这时小松鼠才知道:“啊,这不是天鹅蛋,是鹅卵石!” 1、在括号内填上合适的量词。 一()蛋一()松鼠一()小溪 一()盘子一()斧头一()石头 2、在文中找出下列动词的同义词。 绑——()寻——()敲——()蹦——() 3、给多音字组词。 背bēi()bèi() 转zhuǎn()zhuàn() 4、根据课文的内容填空。 小松鼠用各种各样的办法把天鹅蛋搬回家。它们有的用双手(),有的用绳子()蛋()在肩上,有的()蛋在地上(),还有的两只小松鼠一起(),把蛋运回了家。 2、让座 星期一早上,小猴背着书包高高兴兴地上学去。 他乘上116路公交车,车厢内乘客很多,有强壮的小牛,有聪明的小白兔,有长鼻子的大象……车厢都快挤满了。小猴好不容易在靠窗的地方找到一个座位,舒服地坐在位置上,一边看着窗外的景色,一边等着驾驶员叔叔开车。 当车开到第二站停靠的时候,小猴看见山羊公公也上了车。山羊公公年老体弱,上车后不是被乘客挤来挤去,就是被车子颠得站也站不稳。小猴见了连忙把自己的座位让给了山羊公公。车厢里的乘客都表扬了小猴。 1、从文中找出下列词语的反义词。 难受——()瘦弱——()批评——() 2、照样子写词语。例:挤来挤去 3、回答问题。 (1)小猴坐在位置上舒服吗?请你用“——”画出文中的句子。 (2)车上的动物有( ) (3)小猴为什么要把座位让给山羊公公? 因为所以 (4)你觉得小猴怎么样? 阅读练习(三) 莲的老祖宗(zōnɡ)在印度(yìndù),我国大部分地区都有种植,特别是在南方一带,莲塘星罗棋布。夏天的早晨,池塘里翠绿的荷叶高低参差,紧密相挨,露珠随着风儿的吹拂(fú),在荷叶上滚动,荷花千姿百态:有的含苞(hánbāo)欲放,有的绽开粉红的笑脸,有的花瓣凋(diāo)落,露出莲蓬。 莲的根茎,埋在水底的泥土里,长了不少节,逐渐生出须根、叶柄和花梗(ɡěnɡ)。到了夏末秋初,有些节膨(pénɡ)大起来,变成藕。 1

非常好的Verilog设计经验谈

时序是设计出来的 我的boss有在华为及峻龙工作的背景,自然就给我们讲了一些华为及altera 做逻辑的一些东西,而我们的项目规范,也基本上是按华为的那一套去做。在工作这几个月中,给我感触最深的是华为的那句话:时序是设计出来的,不是仿出来的,更不是湊出来的。 在我们公司,每一个项目都有很严格的评审,只有评审通过了,才能做下一步的工作。以做逻辑为例,并不是一上来就开始写代码,而是要先写总体设计方案和逻辑详细设计方案,要等这些方案评审通过,认为可行了,才能进行编码,一般来说这部分工作所占的时间要远大于编码的时间。 总体方案主要是涉及模块划分,一级模块和二级模块的接口信号和时序(我们要求把接口信号的时序波形描述出来)以及将来如何测试设计。在这一级方案中,要保证在今后的设计中时序要收敛到一级模块(最后是在二级模块中)。什么意思呢?我们在做详细设计的时候,对于一些信号的时序肯定会做一些调整的,但是这种时序的调整最多只能波及到本一级模块,而不能影响到整个设计。记得以前在学校做设计的时候,由于不懂得设计时序,经常因为有一处信号的时序不满足,结果不得不将其它模块信号的时序也改一下,搞得人很郁闷。 在逻辑详细设计方案这一级的时候,我们已经将各级模块的接口时序都设计出来了,各级模块内部是怎么实现的也基本上确定下来了。 由于做到这一点,在编码的时候自然就很快了,最重要的是这样做后可以让设计会一直处于可控的状态,不会因为某一处的错误引起整个设计从头进行。 ==================================================================== 如何提高电路工作频率 对于设计者来说,我们当然希望我们设计的电路的工作频率(在这里如无特别说明,工作频率指FPGA片内的工作频率)尽量高。我们也经常听说用资源换速度,用流水的方式可以提高工作频率,这确实是一个很重要的方法,今天我想进一步去分析该如何提高电路的工作频率。 我们先来分析下是什么影响了电路的工作频率。 我们电路的工作频率主要与寄存器到寄存器之间的信号传播时延及 clock skew有关。在FPGA内部如果时钟走长线的话,clock skew很小,基本上可以忽略, 在这里为了简单起见,我们只考虑信号的传播时延的因素。 信号的传播时延包括寄存器的开关时延、走线时延、经过组合逻辑的时延(这样划分或许不是很准确,不过对分析问题来说应该是没有可以的),要提高电路的工作频率,我们就要在这三个时延中做文章,使其尽可能的小。 我们先来看开关时延,这个时延是由器件物理特性决定的,我们没有办法去改变,所以我们只能通过改变走线方式和减少组合逻辑的方法来提高工作频率。

《吹小号的天鹅》阅读试题.答案

主要内容《吹小号的天鹅》是美国作家E?B?怀特(1899-1985)所着的三部被誉为“二十世纪读者最多、最受爱戴的童话”之一。路易斯是一只生来就哑巴的雄天鹅,为了说出自己的想法,路易斯学会了在石板上写字。可是其他天鹅是不认字的,路易斯还是没办法向它心爱的雌天鹅倾诉衷肠。为了帮助路易斯,天鹅爸爸从乐器店里偷来了小号。路易斯练了一遍又一遍,终于从小号里吹出了心底深处的歌。乐声不仅打动了塞蕾娜,也赢得了人们的尊敬与赞赏。生活的道路,在路易斯眼前,越来越宽广。这是一个关于成长的动人故事,当代文豪约翰·厄普代克由衷感叹:“能有这本书,实在是我们的幸运。” 填空题 1、萨姆把路易斯安排在(1 )年级上课。 2、路易斯(嗓子)有缺陷,它用(文字)与人交流。 3、当路易斯第一次来到牧场找萨姆的时候,萨姆是从(咬开鞋带的动作)认出他的。 4、路易斯学吹小号是为了(追求塞蕾娜)。 5、路易斯用小号拼命赚钱是为了(还小号的钱)。 6、管理员告诉路易斯,在费城动物园他和赛蕾娜可以安全,衣食无忧的生活,但是路易斯为了(自由)不同意。

7、路易斯说:“天空是我的起居室。森林是我的客厅。寂静的湖是我的浴缸。我不能一辈子留在栅栏里面。”从这段话中你可以看出路易斯向往(自由)的生活。 8、在库库斯夏令营,路易斯救了一个小男孩,他得到了(救生奖章)。 9、天鹅爸爸还钱的时候(被抢击中)(遭遇了什么事)。 10、《吹小号的天鹅》作者是(E·B怀特),这个故事发生在(美国)。 11、“我做这件事是要帮助我的儿子。我做这件事是出于对我儿子路易斯的爱。”这句话是(天鹅爸爸)说的。 12、路易斯用(小号)向心爱的赛蕾娜表达爱情。 选择题 1、在这本书里,雌天鹅一次下了( c)个蛋。 A、3 B、4 C、5 D、6 2、雌天鹅在孵蛋时, ( B )从灌木后面出来,想偷吃天鹅蛋。 A、狼 B、狐狸 C、老虎 D、狮子 3、不会发出声音的天鹅,名字叫( B )。 A、萨姆 B、路易斯 C、塞蕾娜 4、夏天结束了,雄天鹅要带领一家人去( A) A、蒙大拿 B、佛罗里达 C、加拿大 5、雄天鹅教小天鹅飞行,他认为飞行一共包括( C)个部分。

Saber常见电路仿真实例

Saber常见电路仿真实例 一稳压管电路仿真 (2) 二带输出钳位功能的运算放大器 (3) 三5V/2A的线性稳压源仿真 (4) 四方波发生器的仿真 (7) 五整流电路的仿真 (10) 六数字脉冲发生器电路的仿真 (11) 七分频移相电路的仿真 (16) 八梯形波发生器电路的仿真 (17) 九三角波发生器电路的仿真 (18) 十正弦波发生器电路的仿真 (20) 十一锁相环电路的仿真 (21)

一稳压管电路仿真 稳压管在电路设计当中经常会用到,通常在需要控制电路的最大输入、输出或者在需要提供精度不高的电压参考的时候都会使用。下面就介绍一个简单例子,仿真电路如下图所示: 在分析稳压管电路时,可以用TR分析,也可以用DT分析。从分析稳压电路特性的角度看,DT分析更为直观,它可以直接得到稳压电路输出与输入之间的关系。因此对上面的电路执行DT分析,扫描输入电压从9V到15V,步长为0.1V,分析结果如下图所示: 从图中可以看到,输入电压在9~15V变化,输出基本稳定在6V。需要注意的是,由于Saber仿真软件中的电源都是理想电源,其输出阻抗为零,因此不能直接将电源和稳压管相连接,如果直接连接,稳压管将无法发挥作用,因为理想电源能够输

出足以超出稳压管工作范围的电流。 二带输出钳位功能的运算放大器 运算放大器在电路设计中很常用,在Saber软件中提供了8个运放模板和大量的运放器件模型,因此利用Saber软件可以很方便的完成各种运方电路的仿真验证工作.如下图所示的由lm258构成的反向放大器电路,其放大倍数是5,稳压二极管1N5233用于钳位输出电压. 对该电路执行的DT分析,扫描输入电压从-2V->2V,步长为0.1V,仿真结果如下图所示:

个人总结FPGA设计中Verilog编程的27条经验

个人总结Verilog编程27条经验 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. 工具刀具、量具和模具需要高硬度和高耐磨性淬火之后应在150-250℃温度范围内进行低温回火弹簧和弹性零件需要高强度、高弹性和一定的韧性淬火之后应在300-500℃温度范围进行中温回火齿轮和轴类等零件需要获得良好的综合力学性能淬火之后应在500-650℃温度范围内进行高温回火。5 钢与铸铁的基本区别之一是含碳量不同钢的含碳量在2.11% 以下铸铁的含碳量在2.11% 以上。而钢的含碳量在0.25%以下时称为低碳钢含碳量为0.25-0.60%为中碳钢含碳量在大于0.6%时为高碳钢。 6 调质是淬火与高温回火相结合的热处理工艺。二、名词解释退火金属缓慢加热到一定温度保持足够时间然后以适宜速度冷却的过程正火将工件加热至Ac3或Acm 以上30~50℃保温一段时间后从炉中取出在空气中或喷水、喷雾或吹风冷却的金属热处理工艺淬火钢加热到临界温度Ac3亚共析钢或Ac1过共析钢以上某一温度保温一段时间使之全部或部分奥氏体1化然后以大于临界冷却速度的冷速快冷到Ms 以下或Ms 附近等温进行马氏体或贝氏体转变的热处理工艺强度表征金属材料抵抗断裂和变形的能力塑性金属材料在外力作用下产生永久变形而不被破坏的能力冲击韧度反应材料在冲击载荷的作用下抵抗断裂破坏的能力。三、将下列各种牌号的材料填入合适的类别并举例说明可以

Verilog的135个经典设计实例

【例3.1】4位全加器 module adder4(cout,sum,ina,inb,cin); output[3:0] sum; output cout; input[3:0] ina,inb; input cin; assign {cout,sum}=ina+inb+cin; endmodule 【例3.2】4位计数器 module count4(out,reset,clk); output[3:0] out; input reset,clk; reg[3:0] out; always @(posedge clk) begin if (reset) out<=0; //同步复位 else out<=out+1; //计数 end endmodule 【例3.3】4位全加器的仿真程序 `timescale 1ns/1ns `include "adder4.v" module adder_tp; //测试模块的名字 reg[3:0] a,b; //测试输入信号定义为reg型 reg cin; wire[3:0] sum; //测试输出信号定义为wire型 wire cout; integer i,j; adder4 adder(sum,cout,a,b,cin); //调用测试对象 always #5 cin=~cin; //设定cin的取值 initial begin a=0;b=0;cin=0; for(i=1;i<16;i=i+1) #10 a=i; //设定a的取值 end - 1 -

initial begin for(j=1;j<16;j=j+1) #10 b=j; //设定b的取值 end initial//定义结果显示格式 begin $monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum); #160 $finish; end endmodule 【例3.4】4位计数器的仿真程序 `timescale 1ns/1ns `include "count4.v" module coun4_tp; reg clk,reset; //测试输入信号定义为reg型 wire[3:0] out; //测试输出信号定义为wire型 parameter DELY=100; count4 mycount(out,reset,clk); //调用测试对象 always #(DELY/2) clk = ~clk; //产生时钟波形 initial begin//激励信号定义 clk =0; reset=0; #DELY reset=1; #DELY reset=0; #(DELY*20) $finish; end //定义结果显示格式 initial $monitor($time,,,"clk=%d reset=%d out=%d", clk, reset,out); endmodule 【例3.5】“与-或-非”门电路 module AOI(A,B,C,D,F); //模块名为AOI(端口列表A,B,C,D,F) input A,B,C,D; //模块的输入端口为A,B,C,D output F; //模块的输出端口为F - 2 -

射频电路设计实例以及一些经常遇见的问

射频电路设计实例以及一些经常遇见的问射频电路设计很多人都会,那么你知道它的一些注意事项吗?在实际电路设计中,会遇到各种奇怪的问题,这就需要自己通过实践来积攒经验。真正实用的技巧是当这些准则和法则因各种设计约束而无法准确地实施时如何对它们进行折衷处理。当然,有许多重要的RF设计课题值得讨论,包括阻抗和阻抗匹配、绝缘层材料和层叠板以及波长和驻波等,在全面掌握各类设计原则前提下的仔细规划是一次性成功设计的保证。 一、RF电路设计的常见问题 1、数字电路模块和模拟电路模块之间的干扰 如果模拟电路(射频)和数字电路单独工作,可能各自工作良好。但是,一旦将二者放在同一块电路板上,使用同一个电源一起工作,整个系统很可能就不稳定。 这主要是因为数字信号频繁地在地和正电源(>3 V)之间摆动,而且周期特别短,常常是纳秒级的。由于较大的振幅和较短的切换时间。使得这些数字信号包含大量且独立于切换频率的高频成分。在模拟部分,从无线调谐回路传到无线设备接收部分的信号一般小于lμV。因此数字信号与射频信号之间的差别会达到120 dB。显然.如果不能使数字信号与射频信号很好地分离。微弱的射频

信号可能遭到破坏,这样一来,无线设备工作性能就会恶化,甚至完全不能工作。 2、供电电源的噪声干扰 射频电路对于电源噪声相当敏感,尤其是对毛刺电压和其他高频谐波。微控制器会在每个内部时钟周期内短时间突然吸人大部分电流,这是由于现代微控制器都采用CMOS工艺制造。因此,假设一个微控制器以lMHz的内部时钟频率运行,它将以此频率从电源提取电流。如果不采取合适的电源去耦,必将引起电源线上的电压毛刺。如果这些电压毛刺到达电路RF部分的电源引脚,严重时可能导致工作失效。 3、不合理的地线 如果RF电路的地线处理不当,可能产生一些奇怪的现象。对于数字电路设计,即使没有地线层,大多数数字电路功能也表现良好。而在RF频段,即使一根很短的地线也会如电感器一样作用。粗略地计算,每毫米长度的电感量约为l nH,433 MHz时10 toni PCB线路的感抗约27Ω。如果不采用地线层,大多数地线将会较长,电路将无法具有设计的特性。 4、天线对其他模拟电路部分的辐射干扰 在PCB电路设计中,板上通常还有其他模拟电路。 例如,许多电路上都有模,数转换(ADC)或数/模转换器(DAC)。射频发送器的天线发出的高频信号可能会到达ADC的模拟淙攵恕R蛭魏蔚缏废呗范伎赡苋缣煜咭谎⒊龌蚪邮誖F信号。如果ADC输入端的处理不合理,RF信号可能在ADC输入的ESD二极管内自激。从而引起ADC偏差。 二、五大经验总结 1、射频电路布局原则 在设计RF布局时,必须优先满足以下几个总原则: (1)尽可能地把高功率RF放大器(HPA)和低噪音放大器(LNA)隔离开来,简单地说,就是让高功率RF发射电路远离低功率RF接收电路;

关于天鹅蛋的阅读理解及答案

关于天鹅蛋的阅读理解及答案关于天鹅蛋的阅读理解及答案 “天鹅蛋” 一天,松鼠妈妈带着一群小松鼠到山坡下找吃的.。它们走啊走,来到一条小溪边,看到许许多多又光又圆的蛋,小松鼠们高兴得又蹦又跳,又喊又叫:“啊,天鹅蛋!” 松鼠妈妈说:“快,快把天鹅蛋搬回家去。”小松鼠们立即行动。有的用手捧,有的用绳子捆住蛋背在肩上,的有抱着蛋在地上滚,还有两只小松鼠一起抬,把天鹅蛋搬回了家。大家累得满头大汗,松鼠妈妈说:“这一下我们可以吃得饱饱的了。” 小松鼠忙得团团转,有的拿着盘子把蛋一个一个放在盘子上,有的拿叉子叉蛋,还有的拿小刀砍蛋,可是它们怎么也敲不开天鹅蛋。松鼠妈妈拿起一把斧头,用力向天鹅蛋砸去,只听见发出乒乒乓乓的声音,天鹅蛋还是又光又圆,可蛋下面的盘子给砸碎了。这时小松鼠才知道:“啊,这不是天鹅蛋,是鹅卵石!” 1.连一连,在括号内填上合适的量词。 一()松鼠------ 正确答案:一()松鼠------只

一()小溪------ 正确答案:一()小溪------条 一()斧头------ 正确答案:一()斧头------把 一()石头------ 正确答案:一()石头------块2.在文中找出下列动词的同义词。绑------ 正确答案:绑------捆 寻------ 正确答案:寻------找 敲------ 正确答案:敲------砸 蹦------ 正确答案:蹦------跳 3.给多音字,选字组词。 ()少shǎo A.多 B.年 正确答案:A 4.给多音字,选字组词。 少shào()

A.多 B.年 正确答案:B 5.给多音字,选字组词。()兴xìng A.高 B.奋 正确答案:A 6.给多音字,选字组词。兴xīnɡ() A.高 B.奋 正确答案:B 7.给多音字,选字组词。()转zhuàn A.旋 B.身 正确答案:A 8.给多音字,选字组词。转zhuǎn() A.旋 B.身

二年级下期语文阅读练习一

二年级下期语文阅读练习一 (1) 有一条蛇,每天都到河边的草丛里玩耍。 有一天,忽然刮起了狂风,下起了大雨。蛇头非常着急,拖着蛇尾拼命地往回爬。不小心,蛇尾被树枝划了道口子。受伤的蛇尾埋怨蛇头:“我总是跟在你后头受罪,咱们两个从今以后分开,各走各的吧。” “你跟在我后边嫌受罪,可是你要知道,你走过的路,都是我在前边开辟出来的。咱们两个只有合在一起,才能有快乐;如果分开了,那就要遭殃!”蛇头耐心地开导蛇尾。但蛇尾听不进去,自己就走开了。蛇头继续往前爬,安全地回到蛇洞里。蛇尾离开蛇头后,辨不清方向,不知往哪儿走,拐来拐去,掉进一条石缝里,被夹住动弹不了。临死前,它说:“。” 1、看拼音写词语。(从文中找) wán shuǎkuáng fēng jìxùzāo yāng 2、从文中找出下面词语的反义词。 危险——()难过——() 3、给下面的句子换一种说法,意思不变。(换成“把”字句) 不小心,蛇尾被树枝划了道口子。 4、蛇头告诉蛇尾他们两个不能分开的原因是: 5、把短文最后补充完整。 6、给短文加一个题目。 (二)动物尾巴的妙用 世界上大约生活着150余万种动物。动物身上大都长有一条尾巴,动物的尾巴形状各异,妙用多种。 鸟把尾巴当作飞行器。鸟的尾巴上,长着又长又宽的羽毛,这些羽毛展开时好像扇子,能够灵活转动,便于掌握飞行方向。鸟尾在飞行时起着舵的作用。 鱼把尾巴当作游泳器。鱼在水里靠尾巴的左右摆动,促使身体向前推进。鱼的尾巴还能控制方向,并随不同的摆动方向而转向游泳。 牛把尾巴当作平衡器。牛有长长的尾巴,末端长着丛生的毛。当它奔跑时,尾巴竖起,起着平衡身体的作用。 鳄鱼把尾巴当作武器。生活在热带地区的非洲鳄,见到牛、羚羊、鹿等动物在河边饮水时,便突然将尾巴一扫,把这些动物打入河里,然后张开大嘴,饱餐一顿。 狐猴把尾巴当作仓库。在食物丰富的雨季,狐猴就在尾巴里储存起大量营养品;在食源缺乏的旱季,狐猴靠消耗尾巴里储备的营养来度日。 松鼠把尾巴当作交际工具。美洲松鼠在合力对付蛇时,用尾巴来传递信息。尾巴猛挥三下,表示总攻开始;挥两下,表示继续进攻;挥一下,表示停止进攻。此外,它们还用尾巴的不同摆动状态,来表示威胁它们生存的蛇的种类、大小、距离和运动方向。

verilog学习心得

verilog学习心得 1.数字电路基础知识:布尔代数、门级电路的内部晶体管结构、组合逻辑电路分析与设计、触发器、时序逻辑电路分析与设计 2.数字系统的构成:传感器AD 数字处理器DA 执行部件 3.程序通在硬件上的执行过程: C语言(经过编译)-->该处理器的机器语言(放入存储器)-->按时钟的节拍,逐条取出指令、分析指令、执行指令 4.DSP处理是个广泛概念,统指在数字系统中做的变换(DFT)、滤波、编码解码、加密解密、压缩解压等处理 5.数字处理器包括两部分:高速数据通道接口逻辑、高速算法电路逻辑 6.当前,IC产业包括IC制造和IC设计两部分,IC设计技术发展速度高于IC设计 7.FPGA设计的前续课程:数值分析、DSP、C语言、算法与数据结构、数字电路、HDL语言计算机微体系结构 8.数字处理器处理性能的提高:软件算法的优化、微体系结构的优化 9.数字系统的实现方式: 编写C程序,然后用编译工具得到通用微处理器的机器指令代码,在通用微处理器上运行(如8051/ARM/PENTUIM) 专用DSP硬件处理器 用FPGA硬件逻辑实现算法,但性能不如ASIC 用ASIC实现,经费充足、大批量的情况下使用,因为投片成本高、周期长 10.FPGA设计方法:IP核重用、并行设计、层次化模块化设计、top-down思想 FPGA设计分工:前端逻辑设计、后端电路实现、仿真验证 11.matlab的应用: matlab中有许多现成的数学函数可以利用,节省了复杂函数的编写时间 matlab可以与C程序接口 做算法仿真和验证时能很快生成有用的数据文件和表格 DSP builder可以直接将simulink模型转换成HDL代码,跳过了中间的C语言改写步骤 12.常规从算法到硬件电路的开发过程: 算法的开发 C语言的功能描述 并行结构的C语言改写 verilog的改写 仿真、验证、修正 综合、布局布线、投入实用 13.C语言改写成verilog代码的困难点: 并行C语言的改写,因为C本身是顺序执行,而不是并行执行 不使用C语言中的复杂数据结构,如指针 目前有将C语言转换成verilog的工具? 14.HDL HDL描述方法是从电路图描述方法演化来的,相比来说更容易修改 符合IEEE标准的有verilog HDL和VHDL VHDL由美国国防部开发,有1987和1993两个版本 verilog由cadence持有,有1995、2001、2005三个版本 verilog较VHDL更有前景:具有模拟电路描述能力、不仅可以开发电路还可以验证电路、门级以下描述比VHDL强

工程训练C习题集答案(选择、填空部分)

工程训练C习题集选择、填空答案 第一章工程材料及热处理 金属材料的性能主要有强度、硬度、塑性和韧性等 热处理是将固体钢采用适当的方式进行加热保温冷却以获得需要的组织结果和性能的工艺方法的 生产中常用的硬度试验方法有布氏硬度实验法和洛氏硬度实验法 热处理一般都是有加热保温和冷却三个阶段组成 热处理只改变金属材料的组织和性能二不能改变其形状和大小,这是铸造、锻造焊接、切削加工的工艺的不同之处 工程材料一般分为金属材料、非金属材料、复合材料三类 碳钢按含碳量可分为低碳钢、中碳钢和高碳钢三种 常用普通热处理包括退火、正火、淬火和回火四种 电镀用电解的方式,在工件表面沉积一层不同于基体的金属或合金镀层或复合镀层的工艺方法,电镀时将金属制件作为阴极 实验中所用的加热炉的名称是箱式电阻炉 牌号为HT100的材料是指灰铸铁,45钢的平均含碳量为0.45% 淬火的主要目的是提高钢的硬度和耐磨性 表示洛氏硬度的符号是HRC,实验是测量其值所用的压头金刚石圆锥体 钢的热处理主要包括退火、正火、淬火、回火 第二章铸造 铸造是熔炼金属、制造铸型凝固后或的具有一定形状尺寸和性能的金属铸件的成型方法

铸造可分为砂型铸造和特种铸造两大类 型砂是砂、粘合剂、附加物按一定的比例混合而成,应具备的性鞥主要有强度、流动性、透气性、耐火性、退让性和溃散性 实习时熔炼金属的设备是坩埚炉 型芯主要作用是用来形成铸件内腔 手工造型按模样特征可分为整模造型、分模造型、挖沙造型、活块造型刮板造型等 机器造型是用机器完成全部或至少完成紧沙操作的造型工序,称为机器造型 常用的特种铸造方法有:融模铸造、消失模铸造、连续铸造和离心铸造以及压力铸造 浇注系统包括外浇道、直浇道、横浇道、内浇道 砂型铸造主要考虑的工艺因素是机械加工余量、起模斜度、收缩余量、铸造圆角、浇注位置 第三章锻压 锻压是指对金属坯料施加冲击力或压力,使坯料产生塑性变形,以改变其尺寸、形状,并改善其性能的成型加工方法 始锻温度是指坯料加热时允许加热的最高温度,终锻温度是指坯料停止锻造的温度 自由锻最常用的基本工序有镦粗、拔长、冲孔、扭转、弯曲等 低碳钢、中碳钢、有色金属及多数合金结构钢具有良好的锻造性能;铸铁的塑性几乎为零不可以锻造 镦粗对圆形截面坯料尺寸的要求是高径比小于2.5~3 模锻是指利用模具使毛坯变形二获得工件的铸造方法,适合大批量生产 板料冲压是使板料经分离或成型而获得毛坯和零件的加工方法,其基本工序分为分离和成型

《丑小鸭》阅读理解题及答案

《丑小鸭》阅读理解题 一、课内语段阅读理解 要是只讲他在这严冬所受的困苦和灾难,那么这个故事也就太悲惨了。当太阳又开始温暖地照着大地的时候,他正躺在沼泽地的芦苇里。百灵鸟唱起歌来——这是一个美丽的春天忽然间,他举起了翅膀:这翅膀拍起来比以前有力得多,马上就把他托起来飞走了。他不知不觉地飞进了一座大花园。这儿苹果树正开着花;紫丁香散发着香气,它那又长又绿的枝条垂到弯弯曲曲的溪流上。啊,这儿美丽极了,充满了春天的气息!三只美丽的白天鹅从树阴里一直游到他面前来。他们轻飘飘地浮在水上,羽毛发出飕飕的响声。小鸭认出了这些美丽的动物,于是心里感到一种说不出的难过。 “我要飞向他们,飞向这些高贵的鸟儿!可是他们会把我弄死的,因为我是这样丑,居然敢接近他们。不过没有什么关系!比被人们打死,被鸭子咬,被鸡群啄,被看管养鸭场的那个女佣人踢和在冬天受苦要好得多!”于是他飞到水里,向这些美丽的天鹅游去。这些动物看到他,马上就竖起羽毛向他游来。“请你们弄死我吧!”这只可怜的小鸭说。他把头低低地垂到水上,只等一死。但是他在这清亮的水上看到了什么呢?他看到了自己的倒影。但那不再是一只粗笨的、深灰色的、又丑又令人讨厌的鸭子,而是——一只天鹅! 只要你是一只天鹅蛋,就算是生在养在鸭场里也没有什么关系。 过去他遭受过那么多的不幸和苦难,可是现在他感到非常高兴。他现在清楚地认识到,幸福和美丽正在向他招手。——许多大天鹅在他周围游泳,用嘴来亲他。 花园里来了几个小孩子。他们向水上抛来许多面包片和麦粒。最小的那个孩子喊道:“你们看那只新来的天鹅!”别的孩子也兴高采烈地叫起来:“是的,又来了一只新的天鹅!”于是他们拍着手,跳起舞来,向他们的爸爸和妈妈跑去。他们把更多的面包和饼糕向水里抛去,同时大家都说:“这新来的一只最美丽!那么年轻。那么好看!”那些老天鹅不禁在他面前低下了头来。 他感到非常难为情。他把头藏到翅膀里面,不知道怎么办才好。他感到太幸福了,但他一点也不骄傲,因为一颗好的心是永远不会骄傲的。他想起他曾经怎样被人迫害和讥笑过,而现在他却听到大家说他是美丽的鸟中最美丽的一只。紫丁香在他面前把枝条垂到水里去。太阳照得很温暖,很愉快。他竖起羽毛,伸出他细长的颈,从内心发出一个快乐的声音:“当我还是是一只丑小鸭的时候,我做梦也没有想到会有这么幸福!” 1.第①段写丑小鸭“认出这些美丽的动物”时,为什么“心里感到一种说不出来的难过”? 2.丑小鸭为什么拼死拼活也要飞向美丽的天鹅? 3.第①段话在全文中有什么作用? 4.找出第②段中描写自然景物的句子,并说说这样描写的作用是什么? 5.怎样理解“只要你是一只天鹅蛋,就算是生在养在鸭场里也没有什么关系。”这句话? 6.丑小鸭变成天鹅后,处境有怎样的变化? 7.面对赞誉,丑小鸭表现如何? 8.面对丑小鸭的生活经历,你得到了哪些启示?

相关文档
最新文档