SOC设计实验报告Word格式文档下载.docx

上传人:b****8 文档编号:22008267 上传时间:2023-02-02 格式:DOCX 页数:70 大小:262.30KB
下载 相关 举报
SOC设计实验报告Word格式文档下载.docx_第1页
第1页 / 共70页
SOC设计实验报告Word格式文档下载.docx_第2页
第2页 / 共70页
SOC设计实验报告Word格式文档下载.docx_第3页
第3页 / 共70页
SOC设计实验报告Word格式文档下载.docx_第4页
第4页 / 共70页
SOC设计实验报告Word格式文档下载.docx_第5页
第5页 / 共70页
点击查看更多>>
下载资源
资源描述

SOC设计实验报告Word格式文档下载.docx

《SOC设计实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《SOC设计实验报告Word格式文档下载.docx(70页珍藏版)》请在冰豆网上搜索。

SOC设计实验报告Word格式文档下载.docx

st2=2'

b10,

st3=2'

b11;

always@(posedgeclkornegedgerst)

begin

if(rst==0)

begin

state<

=st0;

end

else

case(state)

st0:

if(five==1)

=st1;

if(ten==1)

=st2;

st1:

=st3;

st2:

st3:

default:

endcase

end

end

assignout=(state==st3)?

1:

0;

endmodule

3)编写testbench,并使用SynopsysVCS进行仿真;

testbench测试代码如下:

moduletestbench;

regclk,rst_n;

regfive_cents,ten_cents;

wiresoda_out;

always#1clk=~clk;

initial

clk=0;

five_cents=0;

ten_cents=0;

rst_n=1;

#10rst_n=0;

#10rst_n=1;

//1三个五分的

#10five_cents=1;

#2five_cents=0;

//2一个五分,一个十分

#20five_cents=1;

#10ten_cents=1;

#2ten_cents=0;

//3两个十分

#20ten_cents=1;

//4一个十分,一个五分

//5两个五分,一个十分

#10

$stop;

AUTOSELAUTOSEL(five_cents,ten_cents,clk,rst_n,soda_out);

Endmodule

测试波形图如下所示:

Autosel-vcs仿真波形

最下边一行代表的是投5分,倒数第二行代表的是复位信号,第三行是时钟信号,第二行是投10分,由图可知,在投3个5分,1个5分、1个10分,两个10分,1个10分、1个5分,2个5分、1个10分都可使输出信号为1,满足题意要求。

4)使用SynopsysDC进行综合。

autosel.con约束文件如下:

##################Constrain######################

#reset_design

create_clock-period490.2[get_portsclk]

#创建频率为2.04MHz的时钟信号

set_clock_latency-source-max10[get_clocksclk]

set_clock_latency-max10[get_clocksclk]

set_clock_uncertainty-setup20[get_clocksclk]

set_clock_transition10[get_clocksclk]

set_input_delay-max60-clockclk[get_portsten]

set_input_delay-max60-clockclk[get_portsfive]

set_driving_cell-lib_cellbufbd7[all_inputs]

set_output_delay-max80-clockclk[get_portsout]

set_load[load_ofcb13fs120_tsmc_max/bufbd7/I][get_portsout]

set_max_area10000

DC综合脚本文件dc.tcl如下:

############runscript####################

printvartarget_library

printvarlink_library

check_library

check_tlu_plus_files

read_verilog./rtl/autosel.v

#读文件

Link

#连接到目标库

check_design

#检测设计是否由问题

source./scripts/autosel.con

#加上约束文件

check_timing

#检测时序

compile_ultra-scan-retime

#对文件进行编译

redirect-tee-filerc.rpt{report_constraint-all}

redirect-tee-filert.rpt{report_timing}

redirect-tee-filera.rpt{report_area}

#产生各种约束的报告

write-fddc-hier-outautosel.ddc

#生成最后的.ddc文件

产生的rc.rpt文件:

Information:

Updatingdesigninformation...(UID-85)

****************************************

Report:

constraint

-all_violators

Design:

AUTOSEL

Version:

G-2012.06-SP4

Date:

TueMay2020:

15:

052014

Thisdesignhasnoviolatedconstraints.

1

产生的rt.rpt文件:

timing

-pathfull

-delaymax

-max_paths1

*Some/alldelayinformationisback-annotated.

OperatingConditions:

cb13fs120_tsmc_maxLibrary:

cb13fs120_tsmc_max

WireLoadModelMode:

Inactive.

Startpoint:

state_reg[0]

(risingedge-triggeredflip-flopclockedbyclk)

Endpoint:

out(outputportclockedbyclk)

PathGroup:

clk

PathType:

max

PointIncrPath

-----------------------------------------------------------

clockclk(riseedge)0.000.00

clocknetworkdelay(ideal)20.0020.00

state_reg[0]/CP(sdcrb1)0.0020.00r

state_reg[0]/Q(sdcrb1)1.2321.23r

U15/Z(an02d1)0.14*21.37r

out(out)0.00*21.37r

dataarrivaltime21.37

clockclk(riseedge)490.20490.20

clocknetworkdelay(ideal)20.00510.20

clockuncertainty-20.00490.20

outputexternaldelay-80.00410.20

datarequiredtime410.20

dataarrivaltime-21.37

slack(MET)388.83

左侧一列是每一项计划所用的时间,右侧一列是到目前所用的总时间,而且我们可以看出来实际的到达时间远远小于要求的时间,因此时序方面是满足设计要求的。

产生的ra.rpt文件:

area

Library(s)Used:

cb13fs120_tsmc_max(File:

/cad/share/ref/libs/mw_lib/sc/LM/sc_max.db)

Numberofports:

5

Numberofnets:

15

Numberofcells:

8

Numberofcombinationalcells:

6

Numberofsequentialcells:

2

Numberofmacros:

0

Numberofbuf/inv:

Numberofreferences:

Combinationalarea:

10.000000

Buf/Invarea:

0.000000

Noncombinationalarea:

15.750000

NetInterconnectarea:

undefined(Wireloadhaszeronetarea)

Totalcellarea:

25.750000

Totalarea:

undefined

组合逻辑电路所用的面积为10um2,非组合逻辑所用面积为15.75um,因此总的面积为25.75um2。

最终的综合电路图:

Autoseldc综合电路

三、实验报告要求

1)设计思路,状态定义,转台转换图。

2)使用VerilogHDL完成设计。

3)编写testbench。

4)VCS完成仿真,对仿真结果进行分析。

5)编写SynopsysDC综合脚本文件dc.tcl以及约束文件autosel.con。

6)使用SynopsysDC进行综合,给出综合后的报告,包括rc.rpt,rt.rpt,ra.rpt,并做必要说明。

7)综合后的电路图。

四、分析与讨论

在做本次试验时,由于刚开始使用的投币信号的脉冲较宽,使得输出信号在时输出信号有效的最后一个信号为高时,状态发生了连续的跳转,最后的输出信号也发生了迅速的变化,考虑时序之后,使用单周期脉冲的输入信号使得输出信号在下一个周期有效,而在过一个周期由于此时输入信号无效,使得状态不再改变而使得输出信号也只有在一个周期内为高电平,从而满足了要求。

此外,在刚开始设计时由于对状态机的编写规范不清楚,使用了ten和five作为always语句的触发条件,虽然可以仿真出波形,但是由于不符合dc综合的规范,使得在dc时出现了“将CLK信号作为输入信号”的错误,状态机的下周期逻辑只能使用clk作为触发条件。

五、教师评语

签名:

日期:

成绩

实验二、设计PCM30基群帧同步电路

设计PCM30基群帧同步电路,该PCM30机群系统结构如下:

输入输出信号说明:

DATA:

输入串行码流,速率为2.04Mb/S;

CLK:

输入时钟,频率为2.04MHz;

/FLOSS:

输出失步信号,低电平有效。

电路功能说明:

1.输入码流DATA,速率为2.04Mb/S;

每帧256bit,其中前8bit为帧同步码;

偶数帧的帧同步码为10011011,奇数帧的帧同步码为110XXXXX(X为任意值)。

2.系统初始状态为失步态,失步信号FLOSS输出低电平,电路在输入码流里逐比特搜寻同步码,当搜寻到第一个偶帧同步码后,电路转为逐帧搜寻,当连续三帧均正确地搜寻到同步码后,系统状态转为同步态,失步信号输出高电平;

否则电路重新进入逐比特搜寻状态。

3.系统处于同步态后,当连续四帧检出的同步码均错误,则系统转为失步态,失电路时序说明:

1)输入信号DATA与CLK的时序关系

2)同步过程时序与DATA的帧结构

1)定义状态,并画出状态转换图,解释设计思路

为了实现pcm30的功能,我的分析思路如下:

首先,还没有进入帧同步状态时,是位寻址状态依次为bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7;

当满足了一次偶校验之后,要进行空248位的处理,这个状态可以用bitblank来表示;

再次进行一次奇校验用oddcheck0,oddcheck1,oddcheck2三个状态来处理;

奇校验完成进入oddblank来表示空缺253位;

在此进行一次偶校验用evencheck0,evencheck1,evencheck2,evencheck3,evencheck4,evencheck5,evencheck6,evencheck7来表示,通过后使floss=1;

如果通过了偶校验则进入evenblank状态来使pcm30空缺248位,此时进入帧校验的奇校验;

帧校验的奇校验使用三个状态来完成,分别为:

oddhold0,oddhold1,oddhold2来校验奇帧的1、2、3位;

奇校验可能产生不同的结果,例如在0,1,2位产生不符合和符合一共4种情况,这样一来就不能只空固定的位数了,因为假如在0位就不符合的话,在0位就跳出了,这样需要跳过255位,与之类似,1位不符合要跳254位,而3为符合于不符合都是要跳过253位的,因此应该跳的位数随着不同的情况来变化,需要有跳255,254,253位状态oddblank0,oddblank1和oddblank2的分别对应于三个奇校验的状态oddhold0,oddhold1,oddhold2;

oddblank0,oddblank1和oddblank2结束后的状态应该跳到偶校验的状态中,使用8个状态来完成,分别为:

evenhold0,evenhold1,evenhold2,evenhold3,evenhold4,evenhold5,evenhold6,evenhold7;

前7个状态不满足或者第8个状态结束分别跳转到evenblank0,evenblank1,evenblank2,evenblank3,evenblank4,evenblank5,evenblank6,evenblank7,结束后跳转到oddhold处。

状态跳转图如下所示:

pcm30实验代码如下:

modulepcm30(clk,rst,data,FLOSSN);

inputclk,data,rst;

outputFLOSSN;

wirenet_data,net_clk,net_FLOSSN,net_rst;

pc3d01clk_iopad(.PAD(clk),.CIN(net_clk));

pc3d01data_iopad(.PAD(data),.CIN(net_data));

pc3d01rst_iopad(.PAD(rst),.CIN(net_rst));

pc3o05FLOSSN_iopad(.I(net_FLOSSN),.PAD(FLOSSN));

pcmI_pcm(.clk(net_clk),.rst(net_rst),.data(net_data),.floss1(net_FLOSSN));

modulepcm(clk,rst,data,floss1);

inputclk,rst,data;

outputfloss1;

wirefloss1;

regfloss;

reg[7:

0]btblkct;

0]oddblkct;

0]oddblkct0;

0]oddblkct1;

0]oddblkct2;

0]evenblkct;

0]evenblkct0;

0]evenblkct1;

0]evenblkct2;

0]evenblkct3;

0]evenblkct4;

0]evenblkct5;

0]evenblkct6;

0]evenblkct7;

reg[1:

0]flsct;

parameterbit0=8'

b00000000,//0

bit1=8'

b00000001,//1

bit2=8'

b00000010,//2

bit3=8'

b00000011,//3

bit4=8'

b00000100,//4

bit5=8'

b00000101,//5

bit6=8'

b00000110,//6

bit7=8'

b00000111,//7

bitblank=8'

b00001000,//8

oddcheck0=8'

b00001001,//9

oddcheck1=8'

b00001010,//10

oddcheck2=8'

b00001011,//11

oddblank=8'

b00001100,//12

evencheck0=8'

b00010000,//16

evencheck1=8'

b00010001,//17

evencheck2=8'

b00010010,//18

evencheck3=8'

b00010011,//19

evencheck4=8'

b00010100,//20

evencheck5=8'

b00010101,//21

evencheck6=8'

b00010110,//22

evencheck7=8'

b00010111,//23

evenblank=8'

b00011000,//24

oddhold0=8'

b00100000,//32

oddhold1=8'

b00100001,//33

oddhold2=8'

b00100010,//34

oddblank0=8'

b00100011,//35

oddblank1=8'

b00100100,//36

oddblank2=8'

b00100101,//37

evenhold0=8'

b00101000,//40

evenhold1=8'

b00101001,

evenhold2=8'

b00101010,

evenhold3=8'

b00101011,

evenhold4=8'

b00101100,

evenhold5=8'

b00101101,

evenhold6=8'

b00101110,

evenhold7=8'

b00101111,

evenblank0=8'

b00110000,

evenblank1=8'

b00110001,

evenblank2=8'

b00110010,

evenblank3=8'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1