ASIC实验总结报告Word文档下载推荐.docx

上传人:b****6 文档编号:21806840 上传时间:2023-02-01 格式:DOCX 页数:13 大小:259.08KB
下载 相关 举报
ASIC实验总结报告Word文档下载推荐.docx_第1页
第1页 / 共13页
ASIC实验总结报告Word文档下载推荐.docx_第2页
第2页 / 共13页
ASIC实验总结报告Word文档下载推荐.docx_第3页
第3页 / 共13页
ASIC实验总结报告Word文档下载推荐.docx_第4页
第4页 / 共13页
ASIC实验总结报告Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

ASIC实验总结报告Word文档下载推荐.docx

《ASIC实验总结报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ASIC实验总结报告Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

ASIC实验总结报告Word文档下载推荐.docx

这样,传输码中的连零数就被控制在3个以

内。

在取代节中,V叫做破坏点,用它在码流中破坏极性交替这一原则,以便接收端识别。

B码是为了平衡正负极性而加入的一个附加传号,它并不破坏极性交替的原则,因此又称它

为非破坏点。

HDB3码的取代原则为:

(1)出现四个连零用取代节取代;

(2)当相邻破坏点V中间有奇数个原始传号(不包括B码)时,用"

000V”取代;

(3)当相邻破坏点V中间有偶数个原始传号时,用"

B00V'

取代;

(4)用"

取代时,B码和V码与它们前面一个原始传号(或V码)极性相反;

(5)用"

000V'

取代时,V码与它前面的传号极性相同。

可以证明,按照上述原则编出的HDBn码,相邻破坏点V的极性也是相反的,因此,破坏点的引入不会导致码流的正负不平衡。

由于HDB3码中的V码破坏了极性交替原则,因此,在收端很容易找到它。

在译码时,将破坏点V检出,包括它前面的三位码一律还原为“0”码就完成了HDB3码的译码工作。

2、HDB3解码电路

HDB3译码电路完成编码的反变换,关键之处是检出破坏点,取消“取代节”,即将

“000V”或“B00V”还原成“0000”,其管腿框图如下:

图2HDB3译码电路管脚图

四、HDB3译码电路模块设计

根据编码规则,解码过程步骤为:

首先将同步时钟信号、正整流信号、负整流信号输入解码模块中,然后从正整流信号和负整流信号中可以检测出两路包含V码的信号,将两路V码合成一路信号,再对其进行解码,最后将双相码变换成单相码。

示意图如下图所示:

图7解码流程示意图

1、V码检测

V码检测同时进行正V码检测和负V码检测,这两个检测模块的设计思想类似。

当正整流信号上升沿到来时对输入的脉冲进行计数,当计数到1时,输出一个脉冲作为+V脉冲,同时计数器清零。

在计数期间,一旦检测到负整流信号脉冲,计数器立即清零,重新从零计数。

这是因为在两个正整流信号脉冲之间,如果存在负整流信号脉冲,说明第二个正整流信号脉冲不是+V码,只有在连续两个正整流信号脉冲之间没有负整流信号脉冲,才能说明这两个正整流信号脉冲在HDB3码中是同极性的,达到检测+V码的目的。

-V码检测与+V码的检测类似,所不同的是-V码的检测是在正整流信号脉冲的控制下对负整流信号脉冲进行计数、检测和判定。

图8是正V码检测的流程图:

图8正V码检测流程示意图

2、V码和B码解码过程

检测到V码后,根据HDB3编码规则,只需将V码及之前3位码全部置零就可同时完成扣除V码和B码的操作。

这里需要使用两组4位移位寄存器实现。

扣除V码和B码之后,还需要将双相码变换成单相码,即当输入是“00”时输出“0”,输入是“01”或“10”时输出“1”,这样就完成了HDB3的解码。

图9为双相码变单相码流程示意图:

图9双相码变单相码流程示意图

五、实验结果

交互仿真

综合后的门级电路

门级电路仿真

七、实验总结

通过本次试验,我对verilog有了更加深入的了解,对ASIC设计也有了直观的认识与体验。

在实验中,由于HDB3码编码、译码规则的特殊性,本次测试程序并没有采用给随机数进行测试的方式,而是通过给一串典型的固定激励,观察输出结果是否与预期一致。

再通过反复多次测量以确保电路功能的准确性,本实验报告中只给出了一组典型测试数据的仿真波形与结果。

通过本次实验,我深刻体会到测试程序设计的重要性,它涉及到的问题可能比电路本身还要复杂,需要在以后编写程序时继续深入学习。

感谢老师助教们一学期以来的辛勤付出

八、实验代码

1、HDB3译码电路模块设计

modulejiema(hdb,hdb_,clk,reset,nrz);

inputhdb,hdb_,clk,reset;

//defineinputports

outputnrz;

//defineoutputports

regnrz;

reg[1:

0]shift_reg[3:

0];

//defineshiftregister

regcount;

//flagtodetectpositiveVcode

regcount_;

//flagtodetectnegtiveVcode

0]pole_change;

//polarconvertingstate

0]flag;

//recordinputsignal

always@(hdborhdb_)//detectpositiveVcodeandnegtiveVcode

begin

if(hdb)

begin

if(count)

flag=2'

b00;

count=0;

//clearcountflag

end

else

b10;

count=1;

//setcountflag

count_=0;

elseif(hdb_)

if(count_)

//clearcount_flag

b01;

count_=1;

//setcount_flag

b11;

always@(posedgeclkorposedgereset)

if(reset)

shift_reg[3]<

=0;

shift_reg[2]<

shift_reg[1]<

shift_reg[0]<

pole_change<

=shift_reg[3];

//shiftoutdatafromshiftregister

=shift_reg[2];

=shift_reg[1];

=shift_reg[0];

case(flag)

2'

b00:

begin

//clearBcodeandVcode

b01:

shift_reg[0]<

=2'

b10:

b11:

default:

endcase

end

always@(posedgeclkorposedgereset)//ouputsignalnrz

nrz<

elseif(pole_change==2'

b10||pole_change==2'

b01)

=1;

endmodule

2、HDB3译码模块测试程序

//Name:

WangYing/ZhengXueYing/YuHong

//Class:

2010211202

//Number:

10211059

//CreateDate:

23:

43:

1005/14/2012

//ModuleName:

HDB3_decoder

//Version:

ModelSimSE6.5c

`timescale100ns/10ns

modulejiema_test;

reghdb,hdb_,clk,reset;

//driveinputports

wirenrz;

//testoutputport

regflag;

//detectfirsthighlevel

integeri;

reg[35:

0]exp_nrz;

//outputexpect

reg[39:

0]judgement;

//judgetheaccuracybetweentheoutputandexpect

0]result;

//showthesimulationresult

Jiamau1(.hdb(hdb),.hdb_(hdb_),.clk(clk),.reset(reset),.nrz(nrz));

//instantiation

initial//initializevariablesandinputresetsignal

flag=0;

i=0;

exp_nrz=36'

b0000_0000_1101_1000_0100_0111_0001_1000_0111;

clk=0;

reset=0;

#1reset=1;

#5reset=0;

always#2.5clk=~clk;

//clocksignal

initial//inputtestsignal

hdb=0;

hdb_=0;

#10hdb=1;

hdb_=0;

#5hdb=0;

hdb_=1;

#5hdb=1;

#15hdb=1;

#15hdb=0;

#10hdb=0;

while

(1)

always@(posedgenrz)

if(!

flag)

flag<

result<

="

right"

;

always@(posedgeclk)//judgetheresultandshowtheinformation

if(flag)

if(i<

36)

if(nrz==exp_nrz[i])

judgement<

wrong"

if(i!

=0)

$display("

%s!

"

judgement);

$write("

nrz=%b;

expect:

nrz=%b;

nrz,exp_nrz[i]);

i<

=i+1;

Thesimulationresultis%s!

result);

$stop;

3、jiema.tcl约束文件内容

setLIBRARY/home2/student/lib/train/synopsys

settopjiema

set_attrlibrary$LIBRARY/typical.lib

read_hdl{jiema.v}

elaboratejiema

setcyc20.00

procall_inputs{}{find-port-inputs-no_clocks*}

procall_outputs{}{find-port-outputs*}

read_sdcjiama.sdc

synthesize-to_generic-no_incremental

synthesize-to_mapped-effmedium

write_hdljiama>

jiema.vg

write_sdf–designjiema>

jiema.sdf

write_sdcjiema>

jiema.gate.sdc

4、jiema.sdc文件内容:

setsdc_version1.4

set_units-capacitance1000.0fF

set_units-time1000.0ps

#Setthecurrentdesign

current_designcontrol

create_clock-name"

clk"

-add-period20.0-waveform{0.010.0}[get_portsclk]

set_input_delay–clock[get_clocksclk]–add_delay2.0[(hdb,hdb_,clk,reset,nrz]

set_output_delay–clock[get_clocksclk]–add_delay2.0[get_portsyout]

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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