基于FPGA的通信卡设计和实现_第1页
基于FPGA的通信卡设计和实现_第2页
基于FPGA的通信卡设计和实现_第3页
基于FPGA的通信卡设计和实现_第4页
基于FPGA的通信卡设计和实现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    基于FPGA的通信卡设计和实现        马尚行,倪美强 时间:2008年07月18日     字 体: 大 中 小        关键词:        ? 摘 要:关键词: 通信卡? FPGA? 串口传输? 数字交换网络? FPGA是20世纪80年代中期以后发展起

2、来的一种现场可编程的大规模集成器件,具有高集成、高速度、低功耗、体积小、可靠性高等一系列优点,含有丰富的查找表(LUT)资源,允许设计师在不改变硬件电路板的情况下实现不同的功能1。因此,FPGA在数字电路的设计中得到了广泛应用。? 通信卡采用的FPGA是XILINX的SPARTAN-系列的XC2S50芯片。该芯片具有176个用户I/O接口、32Kbit的RAM块及24 576bit的分散RAM等丰富资源。在通信卡中,FPGA芯片实现了串口的透明传输和解析传输功能、PCI总线的控制功能、4路ISDN U接口数据的复接和分离功能、各接口数据间的交换功能等。本文分析了基于FPGA的通信卡的设计原理,

3、给出了系统的硬件构架框图,并对串口传输功能和数字交换网络功能的实现进行了重点分析。1 设计介绍2。本设计中传输的通道信号采用ISDN的基本速率,CPU信号由地址信号、数据信号和控制信号三部分组成,实现对通信卡各芯片的配置及对一些公共资源的分配和管理;PCI总线控制器采用PLX公司生产的PCI通用接口芯片PCI9054实现,本设计中,该芯片在本地总线侧采用M模式,可以与MPC860芯片进行无缝连接;音频口的编/译码器芯片采用TP3067,该芯片实现了模拟音频信号和PCM数据信号的相互转换;在本卡中,RS232串口的最大速率为19.2kb/s;U接口控制器采用MOTOROLA公司的MC145572

4、芯片,该芯片用于综合业务数字网基本接入接口,即适用于NT(网络终端)也适应于LT(线路终端)3。MC145572可工作于多种不同模式,本文采用的是MCU模式的短帧操作模式,接口数据为MOTOROLA的IDL型时分2B(B通道数据为64Kb/s)+D(D通道数据为16Kb/s)数据接口,通信卡的四个ISDN U接口作为NT使用;两路音频接口为用户的语音通信提供接口。? ? 2 功能实现? 本设计中,FPGA是通信卡功能实现的关键芯片,是各接口数据通信的桥梁。下面就FPGA实现的串口传输功能(包括串口工作方式,即透明传输方式和解析传输方式的切换及透明传输方式时不同速率数据间的转换)及用于各接口数据

5、通信的数字交换网络功能的实现进行详细分析。2.1 串口传输功能的实现? 通信卡的串口功能芯片由串口扩展芯片ST16C654和收发器芯片LTC1387组成,ST16C654可扩展4个串口,串口传输功能示意图见图3。在通信卡中,串口的数据传输方式有透明传输方式和解析传输方式两种,利用FPGA的可编程性灵活实现了串口传输方式的切换。在解析方式下,只需将ST16C654的收发数据线与LTC1387的收发数据线相连,如要使串口1工作在解析模式下,通过FPGA将L_TD1与ST_TD1连接及L_RD1与ST_RD1连接便可;在透传方式下,由于串口的传输速率不定(在本卡中,串口的传输速率19.2Kb/s),

6、而ISDN U接口一个时隙的传输速率为64kb/s,因此,在串口与U口进行数据透传时,需要编写一个具有速率转换功能的编/解码器。根据抽样原理,对串口输入的数据(速率19.2kb/s),用64kb/s(64>19.2×2)速率进行抽样,根据抽样值能准确地确定原信号4。本文以如图3所示的串口1与串口5间的数据透传为例进行说明,其工作过程描述如下:首先,通过CPU控制FPGA,使串口1和串口5工作在透传模式下,将串口1的L_RD1数据线连接到FPGA的编/解码器,编/解码器以64Kb/s的速率对串口数据进行采样,并将采样数据放到U接口中的一个B通道的一个时隙上进行传输。通过ISDN通

7、道传输到另一个的U接口,该U接口将透传的数据送往本地FPGA,并经过FPGA编/解码器后将数据送往串口5,这样便完成了数据从串口1到串口5的透传。同理,可实现数据从串口5到串口1的透传。本设计串口数据的FPGA编/解码功能的实现采用VHDL语言编写。编码时,根据抽样原理采用64kb/s速率进行采样便可;解码时,只需将FPGA收到的数据以64Kb/s速率发往LTC1387的收数据端口即可。其功能实现代码如下所示。其中CLK2M为2MHz时钟信号,C64K为与2MHz时钟信号的下降沿对齐的64kb/s采样信号,C64K_1n的上升沿与C64K信号的下降沿对齐且其高电平宽度为(1/2M)s,DATA

8、_SR为串口输入的数据,DATA_SR_N为串口输入数据的取反,Q为编码后的数据,asyn_out为解码后送给串口的数据。? ? 下面是FPGA编/解码器编码部分的代码:process(CLK2M,C64K)beginif C64K=1 then QQ1 <=(others=>0);else if CLK2M event and CLK=1 then if DATA_SR=1 thenQQ1 <=QQ1+1;end if;end if;end process;Q1 <=QQ1;process(CLK2M,C64K)beginif C64K=1 then QQ <=

9、(others =>0);else if CLK2M event and CLK2M=1 then if DATA_SR_N=1 thenQQ2 <=QQ2+1;end if;end if;end process;Q2 <=QQ2;Q1_compare_Q2<=1 when Q1(7 downto 0)>Q2(7 downto 0) else 0;process(CLK2M)beginif CLK2M event and CLK2M=1 then if C64K_1n=1 then Q<=Q1_compare_Q2;end if;end if;end pro

10、cess;? 以下为FPGA编/解码器解码部分的代码:process(CLK2M,F8K)beginif? CLK2Mevent and CLK2M=1 then? if F8K=0 then? p<=(others =>0);else p<=p+1;end if;end if;count<=p;end process;process(count(7 downto 5)?-msb comes out first;begin?case count(7 downto 5) is? when 000=>Dout <=locked_ts(7);-locked_ts存

11、储的数据为解码前的串口数据? when 001=>Dout<=locked_ts(6);? when 010=>Dout<=locked_ts(5);? when 011=>Dout<=locked_ts(4);? when 100=>Dout<=locked_ts(3);? when 101=>Dout<=locked_ts(2);? when 110=>Dout<=locked_ts(1);? when 111=>Dout<=locked_ts(0);? when others=>Dout<=Z

12、;? end case;end process;asyn_out<=0 or Dout;2.2 数字交换网络功能的实现? 数字交换网络是通信卡实现数据交换的核心部分,其基本功能是在两个不同时隙间进行交换(每个时隙对应一个用户)。数字交换网络由数据存储器和控制存储器两部分组成。数据存储器的工作方式是“顺序写入,控制读出”,即由定时脉冲控制,按顺序将不同时隙的数据写入相应的单元中,写入的单元号和时隙号一一对应,读出时则要根据控制存储器的控制信息(读出数据)进行;控制存储器是“控制写入,顺序读出”,即数据写入由CPU控制进行,而数据读出由定时脉冲控制,按照时隙号读出相对应单元内容5。? 本设计

13、的交换网容量为128(条)×128(条),假设基地址为BASE_ADDR,按单字节寻址,每个地址代表接收时隙号(目的时隙号),该地址对应的内容字节最高位指示是否做交换,“0”代表不交换,“1”代表做交换,低7位数据表示发送时隙号(源时隙号)。例如:要将N时隙发送到M时隙,使用如下等式:BASE_ADDRM=N|0X80,其中BASE_ADDRM为(BASE_ADDR+M)的地址;BASE_ADDRM=N|0X80表示将N与0X80相或后的值赋予(BASE_ADDR+M)的地址空间。? 通信卡FPGA数字交换网络的VHDL语言实现代码如下所示。其中CLK2M为2MHz时钟信号,F8K_

14、1D为与CLK2M上升沿对齐的同步信号。process(CLK2M)?-产生读CM的地址beginif CLK2Mevent and CLK2M=0 then if F8K_1D=0 then sm_ram_addr(6 downto 0)<=0000001;else sm_ram_addr(6 downto 0)<=sm_ram_addr(6 downto 0)+1;end if;end if;end if;end process;cm_ram_addr(6 downto 0)<=sm_ram_addr(6 downto 0)1;DRAM_SM:dual_ram_8_128

15、?-数据存储器PORT MAP(?addra?=>sm_ram_addr(6 downto 0),? addrb?=>cm_to_sm_addr(6 downto 0),? clka?=>CLK2M,? clkb?=>not CLK2M,? dina?=>sm_in_data(7 downto 0), -数据存储器输入数据? doutb?=>sm_out_data(7 downto 0),-数据存储器读出数据? ena?=>1,? enb?=>cm_to_sm_addr(7),-是否允许数据输出? wea?=>1);DRAM_CM:dual_ram_8_128?-控制存储器PORT MAP(?addra?=>cpu_a(6 downto 0),?-cpu地址? addrb?=>cm_ram_addr(6 downto 0),? clka?=>cpu_clk,?-cpu时钟信号? clkb?=>CLK2M,? dina?=>cpu_din(7 downto 0),-cpu输入数据? doutb?=>cm_to

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论