864234565数字基带信号码型发生器_第1页
864234565数字基带信号码型发生器_第2页
864234565数字基带信号码型发生器_第3页
864234565数字基带信号码型发生器_第4页
864234565数字基带信号码型发生器_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、fpga设计课程设计报告数字基带信号码型发生器专 业: 集 成 电 路班 级: 电 子 0 6 0 4 数字基带信号码型发生器一、实验目的.学习应用vhdl语言和相关码型转换原理实现基带码型转换。.熟悉ise软件的使用,和xilinx fpga开发板的使用。.熟悉fpga系统开发的流程和步骤。4 .培养软件和硬件联合开发的能力和与小组成员分工合作的习惯。二、ise简介本实验使用xilinx公司的fpgaspartan 3e芯片,与芯片相搭配的开发软件是ise,ise可以完成fpga开发的全部流程,即设计输入、仿真、综合、布局布线、生成bit文件、配置及在线调试等。对大多数fpga设计者来说,使

2、用ise即可完成设计任务。ise集成了很多实用工具,包括hdl编辑器hdl editor、ip核生成器core generator system、约束编辑器constraints editor、静态时序分析工具static timing analyzer、布局规划工具floorplanner、fpga编辑工具fpga editor、功耗分析工具xpower、配置工具impact、综合工具xst等。尤其是ise集成环境project navigator、仿真工具ise simulator lite(也可以使用modelsim)、综合工具xst和配置工具impact,这些是fpga初学者先要掌握的

3、。三、实验原理1. 几种典型的基带码型(1) 单极性非归零码(nrz码):这种传输码的零电平与正电平(或负电平)分别对应于二进制代码中的“0”码与“1”码。(2) 双极性非归零码(srz码):这种传输码的正、负电平分别对应于二进制代码中的“1”码与“0”码。(3) 单极性归零码(rz码):在传送“1”码时发送一个宽度小于码元持续时间的归零脉冲;传送“0”码时不发送脉冲。(4) 差分码(cfm码):差分码利用前后码元电平的相对极性变化来传送信息,又称为相对码。(5) 交替极性码(ami码):编码规则是,二进制代码中的“1”码由正、负极性交替的脉冲表示,其脉宽等于码元周期的一半;二进制代码中的“0

4、”码由零电平表示。(6) 分相码(fxm码):每个码元用两个连续极性相反的脉冲表示。如“1”码用正、负脉冲表示,“0”码用负、正脉冲表示。(7) 编码信号反转码(cmi码):二进制代码中的“1”码交替地用“11”和“00”表示;“0”码则固定地用“01”表示。2.码型转换原理说明:1.“高位”为正负极性标志位,其中高电平(1)表示负极性,低电平(0)表示正极性; 2.“ ”表示高、低两种电平;3.基带码发生器的原理框图说明:双极性的码形需要数字部分+模拟电路来实现,图中没有包含模拟电路部分,输出信号为数字信号。对双极性的信号如双极性归零码(rz)、交替极性码(ami)码码形输出时引入正负极性标

5、志位,而对双极性非归零码(nrz)和差分码码形输出时由低电平表示负极性。四、实验过程. 建立新工程并设置并选择设备型号和仿真器;. 新建vhdl文件,编写程序代码并检查语法错误;. 新建波形仿真文件,设置clock和输入信号,并进行行为仿真;. 分配fpga引脚;. 下载配置文件,使用板载的 usb 接口,通过 jtag将 fpga 设计直接下载到 spartan3e 的fpga中;五、vhdl文件及仿真分析.vhdl文件(基带传输码型变换程序)(1)编程思想由于fpga开发板上只有4个输入端和8个输出端,可通过3个输入端选择8种模式的16位序列dat_16,第四个输入端作为异步复位端。由于片

6、上时钟频率为5mhz,为了便于观察现象,可令这8种模式的序列的占空比逐渐增加。由于占空比越大,发光二极管越亮。这样就可以在下载后通过改变输入,观察nrz信号输出端的亮度来确定程序是否正确执行。基带传输码型变换程序的核心是通过16位移位寄存器来移出16位序列dat_16的最高位到锁存器latch_sig,再根据同步时钟产生一个控制占空比的信号latch_cnt,最后再根据这两个信号和码型变换的相关规则来决定码型输出信号的值。(2)全部vhdl程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ie

7、ee.std_logic_unsigned.all;entity hs_ujdm5 isport (clk : in std_logic; -系统时钟 start : in std_logic; -始能信号dat : in std_logic_vector(2 downto 0); -二进制数据输入端nrz : out std_logic; -非归零信号输出端drz : out std_logic; -单极性归零信号输出端srz : out std_logic_vector(1 downto 0);-双极性归零信号ami : out std_logic_vector(1 downto 0);

8、-交替极性信号输出端cfm : out std_logic; -差分信号输出端cmi : out std_logic; -编码信号反转码信号输出端fxm : out std_logic); -分相码(曼彻斯特码)信号输出端end hs_ujdm5;architecture behavioral of hs_ujdm5 issignal dat_16 :std_logic_vector(15 downto 0);beginprocess(clk)beginif clkevent and clk=1 then if dat=000 then dat_16=0000000000000000;-八种不

9、同的输入分别对应 nrz信号不同的占空比elsif dat=001 then dat_16=1100000000000000;elsif dat=010 then dat_16=1111000000000000;elsif dat=011 then dat_16=1111110000000000;elsif dat=100 then dat_16=1111111100000000;elsif dat=101 then dat_16=1111111111000000;elsif dat=110 then dat_16=1111111111110000;elsif dat=111 then dat

10、_16=1111111111111100;end if;end if;end process;process(clk,start)variable latch_dat : std_logic_vector(15 downto 0); -十六位二进制信号锁存器variable latch_sig : std_logic; -高位信号锁存器variable latch_cfm : std_logic; -差分码variable latch_cnt : std_logic; -基带码同步信号variable count_fri : integer range 0 to 2; -分频计数器(码宽定义)

11、variable count_mov : integer range 0 to 16; -移位计数器beginif start=0 then latch_cnt:=0; -异步复位latch_cfm:=0; latch_sig:=0; count_fri:=0;count_mov:=16; -异步置位latch_dat:=0000000000000000;elsif rising_edge(clk) then count_fri:=count_fri+1; -分频计数器+1 if count_fri=2 then count_fri:=0; -计数到2if count_mov16 then c

12、ount_mov:=count_mov+1; -移位计+1 latch_sig:=latch_dat(15); -二进制码高位移入latch_sig中 latch_dat:=latch_dat(14 downto 0)&0; -二进制数据向高位移动一位,低位补零 else latch_dat:=dat_16;count_mov:=0; -载入下一轮将发送的数据 latch_cfm:=0;latch_sig:=0;latch_cnt:=0; -寄存器复位end if; if latch_sig=1 then latch_cfm:=not(latch_cfm); -差分码信号寄存器中信号取反end

13、 if; end if; if count_fri1 then latch_cnt:=1; -基带码同步信号的占空比调节 else latch_cnt:=0; end if; end if;nrz=latch_sig; -非归零码信号drz=latch_sig and latch_cnt; -单极性归零码信号srz(0)=latch_cnt; -双极性归零码信号srz(1)=not(latch_sig); -srz(1)=1表示负极性ami(0)=latch_sig and latch_cnt; -极性交替码信号ami(1)=not(latch_cfm); -ami(1)=1cfm=latch

14、_cfm; -差分码信fxm=latch_cnt xnor latch_sig; -分相码信号if latch_sig=1 then cmi=latch_cfm; -编码信号反转码else cmi=not(latch_cnt);end if;end process;end behavioral;. 仿真波形(1) 激励时钟设置clock time high: 20 ns.clock time low: 20 ns.input setup time: 10 ns.output valid delay: 10 ns.offset: 0 ns.global signals: gsr (fpga) (

15、2) 仿真结果a.局部放大图:当dat=010时,16位输入序列为1111000000000000,仿真波形如图,满足码型转换规则。b.时序仿真全图:当dat由000变化到111时(即由0到7),输入序列由0000000000000000变化到1111111111111100,nrz的占空比也越来越大。仿真波形如下图,符合预期要求。六、引脚分配及硬件实现. 引脚分配net ami loc = f9 ;net ami loc = e9 ;net cfm loc = d11 ;net clk loc = c9 ;net cmi loc = c11 ;net dat loc = n17 ;net d

16、at loc = h18 ;net dat loc = l14 ;net drz loc = f11 ;net nrz loc = e11 ;net srz loc = e12 ;net srz loc = f12 ;net start loc = l13 ;. 硬件实现() 连接fpga开发板和电源,fpga和电脑的通信线路。() fpga开发板上的四个开关作为输入量,从左到右顺次代表dat(0)、,dat(1)、dat(2)、start。() fpga开发板上的8路led作为输出量,从左到右顺次代表六种不同的基带码型输出信号。(舍去了fxm码,否则还需要一路输出型号)。() 完成下载程序后,可通过控制start和dat到dat来验证基带码型转换的正确性。七实验结果由于led灯反应速率相对基带码速率慢得多,基带码的波形在led灯上表现不够明显,实验中经多次修改程序,我们使用特殊输入码,使得nrz码的效果明显,经验证,当dat2.0由000增加到111时,代表nr

温馨提示

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

评论

0/150

提交评论