电子科技大学ASIC课程设计报告.docx
- 文档编号:24300075
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:36
- 大小:718.57KB
电子科技大学ASIC课程设计报告.docx
《电子科技大学ASIC课程设计报告.docx》由会员分享,可在线阅读,更多相关《电子科技大学ASIC课程设计报告.docx(36页珍藏版)》请在冰豆网上搜索。
电子科技大学ASIC课程设计报告
电子科技大学
专用集成电路(ASIC)
课程设计报告
学号:
290130xxxx
学生姓名:
XXX
课题名称:
交换网络复用与解复用模块设计
无线通信与嵌入式系统实验室
通信集成电路与系统工程中心
2011年12月
1、设计原理
我国公用电话交换网(PSTN)是我国发展最早的电信网,主要为刚户提供电话业务。
就目前来看,PSTN仍然是规模最大、业务量最高的电信业务网。
◆交换系统在电话网中的作用
电信交换的基本含义是在公用网大量的终端用户之间,按所需目的地相互传递信息,也就是说,任何一个主叫用户的信息,可以通过电信网中的交换节点发送到所需的任何一个或多个被叫用户。
电话交换是电信交换中最基本的一种交换方式。
一个交换系统应具有下述的三个功能:
l、为两个用户通过话音信号进行会话临时提供一条双向传输的媒介,其通频带应在300-3400HZ之间。
2、提供并传输用户线和网内各种信号。
这些信号包括摘挂机信号、电话号码以及为呼叫的建立、监视和释放所必须的控制信号。
这些控制信号要在网络内的相关节点予以执行。
3、为了提高电话网络的运行和管理效率,网内还需要互相和处理一些命令和信息(如话务餐测量、计费、设备故障检测、故障诊断、故障应急处理和故障排除后的重新运行组织等)。
◆程控数字交换系统是由硬件和软件两大部分组成的。
1.硬件
程控数字交换系统的硬件可以分为三个系统:
话路系统、控制系统和输入输出系统,如图1-1所示。
图1-1程控数字交换机的基本组成
话路系统是指与话音接续有关的设备,它又包括用户级、远端用户级、各种中继接口、信号部件和选组级,其中选组级为交换系统的核心设备。
控制系统的功能包括两个方面:
一方面是对呼叫进行处理:
另一方面对整个交换系统的运行进行管理、监测和维护。
控制系统的硬件由两部分构成:
一个是处理机(CPU),另一个是存储器。
其中处理机是控制系统的核心。
输入输l出系统一般包括打字机、显示器、打印机、以及磁盘和磁带机等外存储器。
打字机是用来输入维护、测试、运转管理等方面的人机命令、显示器和打印机是交换机的输出设备。
外存储器中存放了交换机的全部程序和数据。
2.软件
程控交换机的软件是用来实现交换机的各种控制,是交换机必不可少的一个重要组成部分。
软件又分成程序和数据两大部分。
◆一个简单的交换控制系统主要由线路复用部分、控制部分、以及解复用部分组成,其原理框图如图1-2所示。
图1-2一个简单的交换控制系统组成
本次设计的主要内容为交换网络复用与解复用模块,在下文做出详细设计,包括设计规格书、设计框图、仿真波形和设计结论。
2、设计规格书
1.设计目标
实现交换网络中复用与解复用的两个模块。
2.设计参数
模块输入端口为32路并行8位信号,每一路输入的系统时钟周期为3904ns;
模块输出端口为32路并行8位信号,每一路输出的系统时钟周期为3904ns;
3.系统输入
32路数据的接入,每个用户输入为8位的并行信号,输入时钟为周期为3904ns。
复位信号,低电平有效。
一旦检测到复位信号,整个模块内部控制寄存器和状态寄存器立即清零。
帧同步信号,用于指示每一帧的起始位置。
系统检测到帧同步信号一次读入每个用户的数据,通过复用模块将起读入模块内部。
时钟信号,用于同步内部寄存器。
4.系统输出
32路数据的输出,每个用户输入为8位的并行信号,输入时钟为周期为3904ns。
3、设计框图
整个系统由5个模块组成,其原理框图如图3-1所示:
控制模块:
用于对整个系统的控制,包括复用控制,串并转换控制,并串转换控制和解复用控制。
复用模块:
对32路输入数据进行复用,依次输入系统。
并串转换模块:
将8bit的并行数据转换为串行数据。
串并转换模块:
将对应的串行数据转换为并行数据。
解复用模块:
对32路数据进行复用输出,依次输出系统。
图3-1系统框图顶层图
系统顶层图代码如下所示:
`timescale1ns/1ps
modulepcm(input[7:
0]d_in0,
input[7:
0]d_in1,
input[7:
0]d_in2,
input[7:
0]d_in3,
input[7:
0]d_in4,
input[7:
0]d_in5,
input[7:
0]d_in6,
input[7:
0]d_in7,
input[7:
0]d_in8,
input[7:
0]d_in9,
input[7:
0]d_in10,
input[7:
0]d_in11,
input[7:
0]d_in12,
input[7:
0]d_in13,
input[7:
0]d_in14,
input[7:
0]d_in15,
input[7:
0]d_in16,
input[7:
0]d_in17,
input[7:
0]d_in18,
input[7:
0]d_in19,
input[7:
0]d_in20,
input[7:
0]d_in21,
input[7:
0]d_in22,
input[7:
0]d_in23,
input[7:
0]d_in24,
input[7:
0]d_in25,
input[7:
0]d_in26,
input[7:
0]d_in27,
input[7:
0]d_in28,
input[7:
0]d_in29,
input[7:
0]d_in30,
input[7:
0]d_in31,
inputclk,
inputreset,
inputframe_synch,
output[7:
0]d_out0,
output[7:
0]d_out1,
output[7:
0]d_out2,
output[7:
0]d_out3,
output[7:
0]d_out4,
output[7:
0]d_out5,
output[7:
0]d_out6,
output[7:
0]d_out7,
output[7:
0]d_out8,
output[7:
0]d_out9,
output[7:
0]d_out10,
output[7:
0]d_out11,
output[7:
0]d_out12,
output[7:
0]d_out13,
output[7:
0]d_out14,
output[7:
0]d_out15,
output[7:
0]d_out16,
output[7:
0]d_out17,
output[7:
0]d_out18,
output[7:
0]d_out19,
output[7:
0]d_out20,
output[7:
0]d_out21,
output[7:
0]d_out22,
output[7:
0]d_out23,
output[7:
0]d_out24,
output[7:
0]d_out25,
output[7:
0]d_out26,
output[7:
0]d_out27,
output[7:
0]d_out28,
output[7:
0]d_out29,
output[7:
0]d_out30,
output[7:
0]d_out31
);
//clkperiodis488ns
wire[7:
0]par1,par2;
wireserial_out;
wireserial_start_flag;
wire[4:
0]sel_mux,sel_demux;
wireload_data_register;
control_unitu1(.frame_synch(frame_synch),
.reset(reset),
.clk(clk),
.sel_mux(sel_mux),
.load_data_register(load_data_register),
.sel_demux(sel_demux)
);
switch_muxu2(.d_in0(d_in0),
.d_in1(d_in1),
.d_in2(d_in2),
.d_in3(d_in3),
.d_in4(d_in4),
.d_in5(d_in5),
.d_in6(d_in6),
.d_in7(d_in7),
.d_in8(d_in8),
.d_in9(d_in9),
.d_in10(d_in10),
.d_in11(d_in11),
.d_in12(d_in12),
.d_in13(d_in13),
.d_in14(d_in14),
.d_in15(d_in15),
.d_in16(d_in16),
.d_in17(d_in17),
.d_in18(d_in18),
.d_in19(d_in19),
.d_in20(d_in20),
.d_in21(d_in21),
.d_in22(d_in22),
.d_in23(d_in23),
.d_in24(d_in24),
.d_in25(d_in25),
.d_in26(d_in26),
.d_in27(d_in27),
.d_in28(d_in28),
.d_in29(d_in29),
.d_in30(d_in30),
.d_in31(d_in31),
.sel_mux(sel_mux),
.par1(par1)
);//d_incanonlybewire
parallel_2_serielu3(.par1(par1),
.clk(clk),
.reset(reset),
.load_data_register(load_data_register),
.serial_out(serial_out),
.start_flag(serial_start_flag)
);
seriel_2_parallelu4(.ser(serial_out),
.clk(clk),
.start_flag(serial_start_flag),
.reset(reset),
.par2(par2)
);
switch_demuxu5(.par2(par2),
.sel_demux(sel_demux),
.clk(clk),
.d_out0(d_out0),
.d_out1(d_out1),
.d_out2(d_out2),
.d_out3(d_out3),
.d_out4(d_out4),
.d_out5(d_out5),
.d_out6(d_out6),
.d_out7(d_out7),
.d_out8(d_out8),
.d_out9(d_out9),
.d_out10(d_out10),
.d_out11(d_out11),
.d_out12(d_out12),
.d_out13(d_out13),
.d_out14(d_out14),
.d_out15(d_out15),
.d_out16(d_out16),
.d_out17(d_out17),
.d_out18(d_out18),
.d_out19(d_out19),
.d_out20(d_out20),
.d_out21(d_out21),
.d_out22(d_out22),
.d_out23(d_out23),
.d_out24(d_out24),
.d_out25(d_out25),
.d_out26(d_out26),
.d_out27(d_out27),
.d_out28(d_out28),
.d_out29(d_out29),
.d_out30(d_out30),
.d_out31(d_out31)
);
endmodule
v子模块1为控制模块:
用于对整个系统的控制,包括复用控制,串并转换控制,并串转换控制和解复用控制,其原理框图如图3-2所示。
图3-2控制模块原理图
Verilog代码如下所示:
modulecontrol_unit(inputframe_synch,
inputreset,
inputclk,
outputreg[4:
0]sel_mux,
outputreg[4:
0]sel_demux,
outputregload_data_register
);
regcount_frame;
reg[2:
0]count;
reg[4:
0]sel_demux_tmp,sel_demux_tmp1,sel_demux_tmp2,sel_demux_tmp3,sel_demux_tmp4,sel_demux_tmp5;
///////////////////////////////////////////////////
always@(posedgeclk)
if(~reset)//resetisnegetive
count=0;
else
count=count+1;
///////////////////////////////////////////////////
///////////////////////////////////////////////////
always@(posedgeclk)
if(~reset)//resetisnegetive
count_frame=0;
elseif(~frame_synch)
count_frame=0;
else
count_frame=count_frame+1;
///////////////////////////////////////////////////
///////////////////////////////////////////////////
always@(posedgeclk)
if(~reset)//resetisnegetive
begin
sel_mux=0;
sel_demux_tmp=0;
end
elseif(count==7)
begin
sel_mux=sel_mux+1;//betheseletportoftheswitch_mux
sel_demux_tmp=sel_demux_tmp+1;//betheseletportoftheswitch_demux
end
else
begin
sel_mux=sel_mux;
sel_demux_tmp=sel_demux_tmp;
end
///////////////////////////////////////////////////
///////////////////////////////////////////////////
always@(posedgeclk)
if(~reset)//resetisnegetive
load_data_register=0;
elseif(frame_synch&&count_frame==0)
load_data_register=1;//theenablesignalofparallel_2_seriel
else
load_data_register=0;
///////////////////////////////////////////////////
always@(posedgeclk)
if(~reset)//resetisnegetive
begin
sel_demux_tmp1<=0;
sel_demux_tmp2<=0;
sel_demux_tmp3<=0;
sel_demux_tmp4<=0;
sel_demux_tmp5<=0;
sel_demux<=0;
end
else
begin
sel_demux_tmp1<=sel_demux_tmp;
sel_demux_tmp2<=sel_demux_tmp1;
sel_demux_tmp3<=sel_demux_tmp2;
sel_demux_tmp4<=sel_demux_tmp3;
sel_demux_tmp5<=sel_demux_tmp4;
sel_demux<=sel_demux_tmp5;
end
endmodule
复用模块:
对32路输入数据进行复用,依次输入系统,其原理框图部分截图如图3-3所示。
图3-3复用模块原理框图部分截图
其Verilog代码如下所示:
moduleswitch_mux(input[7:
0]d_in0,d_in1,d_in2,d_in3,d_in4,d_in5,d_in6,d_in7,d_in8,d_in9,
input[7:
0]d_in10,d_in11,d_in12,d_in13,d_in14,d_in15,d_in16,d_in17,d_in18,d_in19,
input[7:
0]d_in20,d_in21,d_in22,d_in23,d_in24,d_in25,d_in26,d_in27,d_in28,d_in29,
input[7:
0]d_in30,d_in31,
input[4:
0]sel_mux,
outputreg[7:
0]par1);
always@(sel_muxord_in0ord_in1ord_in2ord_in3ord_in4ord_in5ord_in6ord_in7ord_in8ord_in9
ord_in10ord_in11ord_in12ord_in13ord_in14ord_in15ord_in16ord_in17ord_in18ord_in19
ord_in20ord_in21ord_in22ord_in23ord_in24ord_in25ord_in26ord_in27ord_in28ord_in29
ord_in30ord_in31)
begin
case(sel_mux)
5'd0:
par1=d_in0;
5'd1:
par1=d_in1;
5'd2:
par1=d_in2;
5'd3:
par1=d_in3;
5'd4:
par1=d_in4;
5'd5:
par1=d_in5;
5'd6:
par1=d_in6;
5'd7:
par1=d_in7;
5'd8:
par1=d_in8;
5'd9:
par1=d_in9;
5'd10:
par1=d_in10;
5'd11:
par1=d_in11;
5'd12:
par1=d_in12;
5'd13:
par1=d_in13;
5'd14:
par1=d_in14;
5'd15:
par1=d_in15;
5'd16:
par1=d_in16;
5'd17:
par1=d_in17;
5'd18:
par1=d_in18;
5'd19:
par1=d_in19;
5'd20:
par1=d_in20;
5'd21:
par1=d_in21;
5'd22:
par1=d_in22;
5'd23:
par1=d_in23;
5'd24:
par1=d_in24;
5'd25:
par1=d_in25;
5'd26:
par1=d_in26;
5'd27:
par1=d_in27;
5'd28:
par1=d_in28;
5'd29:
par1=d_in29;
5'd30:
par1=d_in30;
5'd31:
par1=d_in31;
default:
par1=0;
endcase
end
endmodule
并串转换模块:
将8bit的并行数据转换为串行数据其原理框图如图3-4所示。
图3-4并串转换模块原理框图
其Verilog代码如下所示:
moduleparallel_2_seriel(input[7:
0]par1,
inputclk,
inputreset,
inputload_data_register,
outputregserial_out,
outputregstart_flag
);
regen;
regser;
reg[7:
0]count_main;
reg[2:
0]cou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子科技大学 ASIC 课程设计 报告