FPGA设计实例课件

上传人:壹****1 文档编号:589864357 上传时间:2024-09-11 格式:PPT 页数:40 大小:202.50KB
返回 下载 相关 举报
FPGA设计实例课件_第1页
第1页 / 共40页
FPGA设计实例课件_第2页
第2页 / 共40页
FPGA设计实例课件_第3页
第3页 / 共40页
FPGA设计实例课件_第4页
第4页 / 共40页
FPGA设计实例课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《FPGA设计实例课件》由会员分享,可在线阅读,更多相关《FPGA设计实例课件(40页珍藏版)》请在金锄头文库上搜索。

1、FPGA设计基础设计实例 FPGA设计实例BCD码到余3码的转换电路 nBCD码和余3码之间有如下关系:nBCD码加3即为余3码。n余3码是一个自补码,即对于任意一个余3码a,存在另外一个a, 使得a+a=9。n电路设计要求:n 假设码流以串行流的形式进入转换电路,并以串行流的方式进行发送,BCD码的低位先进入本转换电路,余-3码的低位先发送 FPGA设计实例序列BCD余3码000000011100010100200100101300110110401000111501011000601101001701111010810001011910011100BCD到余3码 转换表FPGA设计实例并串

2、转换电路 _使用有限状态机FPGA设计实例/* SIN_POUT_SHIFT*/moduleSIN_POUT_SHIFT ( RSTB, IN, CLK, Q );inputRSTB, CLK, IN;output 3:0 Q;reg3:0 Q;always( posedge CLK or negedge RSTB )Q = ( !RSTB )?0: Q,IN;endmodule常见的串并/并串转换FPGA设计实例/*PIN_SOUT_SHIFT */modulePIN_SOUT_SHIFT ( LOAD, IN, CLK, Q );inputLOAD, CLK;input3:0 IN;out

3、put 3:0 Q;reg3:0 Q;always( posedge CLK or posedge LOAD )if( LOAD )Q = IN;elseQ = Q 1;endmoduleFPGA设计实例n把4位的并行数据转换为符合以下协议的串行数据流,数据流用scl和sda两条线传输,sclk为输入的时钟信号,data3:0为输入数据,d_en为数据输入的使能信号。设计要求:通信协议:scl为不断输出的时钟信号,如果scl为高电平时,sda由高变低,串行数据流开始。如果scl为高电平时,sda由低变高,串行数据结束。sda信号的串行数据位必须在scl为低电平时变化,若变为高则为1,否则为零。

4、FPGA设计实例FPGA设计实例nmodule ptos ( d_en ,data ,scl ,sclk ,sda,rst );ninput d_en , rst;nwire d_en ;ninput 3:0 data ;ninput sclk ;nwire sclk ;noutput scl ;noutput sda ;nwire sda ;FPGA设计实例nreg scl,link_sda,sdabuf;nreg3:0 databuf;nreg7:0 state;nassign sda=link_sda? sdabuf:1bz;nparameter ready = 8b00000001,n

5、start = 8b00000010,nbit1 = 8b00000100,nbit2 = 8b00001000,nbit3 = 8b00010000,nbit4 = 8b00100000,nbit5 = 8b01000000,nstop = 8b10000000;FPGA设计实例nalways (posedge sclk or negedge rst)nbeginnif(!rst)nscl=1;nelsenscl=scl;nendnnalways ( posedge d_en)nbeginndatabuf=data;nend FPGA设计实例n/ FSMnalways (negedge sc

6、lk or negedge rst)nif(!rst)nbeginnlink_sda=0;nstate=ready;nsdabuf=1;nendFPGA设计实例nelse nbeginncase (state)nready: if(d_en)nbeginnlink_sda=1;nstate=start;nendFPGA设计实例nelsenbeginnlink_sda=0;nstate=ready;nendnstart:if(scl&d_en)nbeginnsdabuf=0;nstate=bit1;nendFPGA设计实例nelsenstate=start;nbit1: if(!scl)nbeg

7、innsdabuf=databuf3;nstate =bit2;nendn elsen state=bit1;FPGA设计实例nbit2: if (!scl)nbeginnsdabuf=databuf2;nstate=bit3;nendnelse n state =bit2;FPGA设计实例nbit3: if(!scl)nbeginn sdabuf=databuf1;n state =bit4;nendnelsenstate =bit3;nbit4: if(!scl)nbeginn sdabuf=databuf0;n state=bit5;nendnelse nstate =bit4;FPGA

8、设计实例nbit5: if(!scl)nbeginn sdabuf = 0;n state=stop;nendnelse nstate =bit5;nstop: if(scl)nbeginn sdabuf=1;n state=ready;n endnelsenstate =stop;FPGA设计实例ndefault: nbeginn link_sda=0;n sdabuf=1;n state=ready;nendnn endcasen endnendmoduleFPGA设计实例伪随机序列产生器设计 伪随机序列的应用非常广泛,可以用作误码率测量,通信系统性能的测量,信号的加密,数据序列的扰码,扩

9、展频谱等许多方面。 一般来说,伪随机序列的电路为一个反馈移位寄存器,它可分为线性反馈移位寄存器(简称LFSR计数器)和非线性反馈移位寄存器,由线性反馈移位寄存器产生出的周期最长的二进制数字序列称为最大长度线性反馈移位寄存器序列,通常简称为M序列。 FPGA设计实例M序列产生器n由于M序列有很好的信息相关性和伪随机性能,电路实现比较简单,所以在信号的加密,数据序列的扰码,扩频等方面有着广泛的应用。n一个2n1的M序列,可以用n级的移位寄存器产生。实现方式主要有两类,一类是“多对一”方式,另一类是“一对多”的方式 。 FPGA设计实例FPGA设计实例n“多对一”方式,如图a,其中Cn,Cn1,Cn

10、2, C0 ,为反馈系数,这些系数的取值为“1”或“0”,“1”表示该反馈支路连通,“0”表示该反馈支路断开。特征多项式的表达式为 (x)CnXnCn1Xn1C2X2C1X1C0n“一对多”的方式,如图b,其中Dn,Dn1,Dn2, D0 ,为反馈系数,这些系数的取值为“1”或“0”,“1”表示该反馈支路连通,“0”表示该反馈支路断开。特征多项式的表达式为 G(x)D0XnD1Xn1Dn2X2Dn1X1Dn FPGA设计实例n在设计m序列产生器时,移位寄存器的反馈线的数目可由“常用m序列产生器的特征多项式表 ”查表得到。n例:9位M序列生成器 1、串行输出的9位M序列生成器(采用“多对一”方式

11、) 特征多项式:(x)X9X41 FPGA设计实例n/设计nmodule lfsr9 (clock, reset, lfsr_out);ninputclock, reset;noutputlfsr_out;nreg8 : 0 lfsr_count;nassignlfsr_out = lfsr_count 8;nalways ( posedge clock or posedge reset )nif ( reset )nlfsr_count = 0;/反馈为同或情况nelsenbeginnlfsr_count 8: 1 = lfsr_count 7 : 0;nlfsr_count0 = lfsr

12、_count 8 lfsr_count 3;nendnendmoduleFPGA设计实例 2、八位并行输出的9位M序列 在8位的并行输出中,每一个时钟周期需要产生8个比特,设9位M序列产生器某个时刻的状态是lfsr_a8 : 0,并行输出的8位数据是lfsr_a8 : 1,产生下一个状态的移位寄存器输入为lfsr_b8 : 0 。 根据特征多项式:(x)X9X41可以推出下列关系。FPGA设计实例lfsr _b7lfsr_a8lfsr_a3lfsr _b6lfsr_a7lfsr_a2lfsr _b5lfsr_a6lfsr_a1lfsr _b4lfsr_a5lfsr_a0lfsr _b3lfsr

13、_a4lfsr_b8lfsr_a4lfsr_a8lfsr_a3lfsr _b3lfsr_a3lfsr_b7lfsr_a3lfsr_a7lfsr_a2lfsr _b2lfsr_a2lfsr_b6lfsr_a2lfsr_a6lfsr_a1lfsr _b1lfsr_a1lfsr_b5lfsr_a1lfsr_a5lfsr_a0lfsr _b8lfsr_a0fsr_out = lfsr_a 8 : 1FPGA设计实例module lfsr9p (clock, reset, lfsr_out);inputclock, reset;output 8 : 1 lfsr_out;reg8 : 0 lfsr_a;

14、wire 8 : 0 lfsr_b;assign lfsr_out = lfsr_a 8 : 1;assign lfsr_b7 : 4 = lfsr_a8 : 5 lfsr_a3 : 0;assign lfsr_b3 : 0 = lfsr_a4 : 1 lfsr_a8 : 5 lfsr_a3 : 0assign lfsr_b8 = lfsr_a 0;always ( posedge clock or posedge reset )if ( reset )lfsr_a = 9h1ff;/反馈为异或情况elselfsr_a8 : 0 = lfsr_b8 : 0;endmoduleFPGA设计实例汉

15、明距离计算电路设计 主要内容:n 汉明距离的概念n 汉明距离计算电路的实现方法FPGA设计实例一、 汉明距离 汉明距离定义:两个长为N的二元序列S和U之间对应位不相同的位数,用d(S,U)来表示。 在扩频通信和数字突发通信(如TDMA)系统中,接收机进行的数字相关检测或独特码(UW)检测,实际上就是计算本地一组确定序列与接收到的未知序列之间汉明距离的过程。将汉明距离与事先确定的门限相比较,就可以得到检测结果。FPGA设计实例图1 检测器结构框图 设检测的序列长度为N,本地码为确定的二元序列U U = (U1,U2,UN) Ui 0,1 接收机将接收到的数据连续不断地送入N位串行移位寄存器中,任

16、一瞬间移位寄存器的内容为: S = (S1,S2,SN) Si 0,1FPGA设计实例 S与U的对应位进行模二加,当S与U的对应位相同时结果为“0”,不同时结果为“1”,最后得到 D = (D1,D2,DN)其中 序列D中“1”的数目就是S与U之间的汉明距离,可表示为 序列D是序列S与U的比较结果,要得到汉明距离的数值,必须从序列D中计算出“1”的个数。FPGA设计实例1、 求和网络法图2 求和网络法原理图二、汉明距离计算电路实现方法FPGA设计实例原理:将序列D中的各项逐个加在一起,最终累加结果便是汉明距离。分析: 在一般情况下,为了保证计算结果的可靠性,需要将序列D用N位寄存器锁存。 在求

17、和网络中,信号每经过一次加法运算,就引入一定的延迟。要求信号总延时要小于输入信号码元周期。FPGA设计实例2 、计数法原理:首先将序列D并行送入一个“并入串出”的N位移位寄存器中,然后用一个高速时钟将数据送出,同时利用计数器来统计“1”的数目,最后用清零脉冲将计数器清零,为下一周期的计数做好准备。图3 计数法原理图FPGA设计实例分析:假设接收机接收数据速率为R0 由此可以确定计数时钟的最低速率为 R = NR0周期为结论: 计数法的实现电路比较简单,但是当数据速率R0较高或N值较大时,计数时钟的速率R会很大,导致电路难以实现。 适合于低速数据,码序列不宜很长,而且需要有高速率的时钟和高速器件

18、。FPGA设计实例3、 查找表法图4 查找表法原理图原理:将存储器做成一个查找表,把序列D作为地址信号,从表中查找出其对应的汉明距离。分析:序列D的长度为N,存储单元的数据宽度为P,则 P = INT(log2N) + 1 从而要求存储器的容量M为 M = 2N P 随着序列长度N的增加,存储器容量成几何级数增长,当N30时,存储量将超过5Gb。FPGA设计实例4 、组合应用 在具体应用中,如果将几种方法组合使用,计算电路会更加合理、高效。计数求和网络法图5 计数求和网络法原理图FPGA设计实例可编程单脉冲发生器功能要求:可编程单脉冲发生器是一种脉冲宽度可变得信号发生器。在输入按键的控制下,产生单脉冲,脉冲的宽度由8位的输入数据控制。系统工作流程:1、首先预置脉宽参数;2、按下复位键,初始化系统;3、按下启动键,产生单脉冲。实验内容:FPGA设计实例设计中需要注意的问题: 1、为了确保脉宽参数能够被有效装载,复位脉冲不能同时用来作为预置脉冲,要在其之后再自动产生一个脉冲来预置脉宽参数。(延迟5个时钟,宽度一个时钟周期)。 2、由于启动键的按下与系统时钟是不同步的,不加处理会影响单脉冲的精度。(使产生的单脉冲的上升沿与时钟取得同步)。 3、考虑由于各人因素按键时可能会产生多个尖脉冲,因此需要设计 一种功能,使得在检测到启动键有效后封锁启动键的再次输入,直到系统复位。FPGA设计实例

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号