在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6122|回复: 15

[活动] 简易数字NPLL频谱显示设计基于NEXYS 3平台

[复制链接]
发表于 2012-6-21 00:17:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 laokai 于 2012-6-21 00:42 编辑

1.整体逻辑构架

28.jpg
FPGA内搭建N PLL,FFT一级简易MAC层。

FPGA虚拟一个sdram接口与sdram 存储器进行交互。

简易的MACMII接口交互。

通过MII接口与PC机进行交互。


整体功能概括

PC机可以通过UDP包配置FPGA内部的 N PLL产生不同频率的正弦波,产生的正弦波送入1024FFT运算器,得到1024点的数据经过MAC层被打包成UDP包丢给PC去显示。

PC机接到UDP包解析并把频谱绘制到软件窗口内。目的学习数字PLL实现方法,以及整体系统设计。


系统状态机

三个状态:

IDLE 初始状态。

CONFIG_STATE 配置寄存器状态。

WORK_STATE
正常工作状态。

模块名称:State_ctrl

接口:

Input Rst_n

Input Sclk 50M时钟,

Input config_end, 配置寄存器全部配置完成标志。来自config_ctrl

Output Init_end 初始化完成进入work状态

共享代码


系统时钟配置

2.1.
系统时钟内部逻辑使用50M

2.2.
PHY时钟25M分为两个1个是内部读buf用另外一个是给receiver的参考时钟,90-180相位差,根据PHY的要求来。

2.3.
Sdram 数据参考时钟50M

3.
MII接口模块

3.1.
MII_trans_io

Input rst_n

Input sclk 50M作为数据交换用

Input tclk 25M MII接口发送数据参考参考时钟

Input clk_25M buf时钟。

Input tx_data_i 8bit 待发送的数据

Input tx_en_i 发送数据有效使能

Output tx_clk 发送数据参考时钟

Output tx_data_o 发送的数据4bit

Output tx_en_o 发送数据有效使能。

使用11Kx8buf进行时钟域转换和位宽转换

共享代码

3.2. MII_rec_io

Input rst_n

Input sclk 50M

Input rx_clk

Input rx_data[3:0]

Input rx_data_en

Output rx_d [7:0]

Output rx_dv

接收使用11Kx8buf进行时钟域转换和位宽转换

共享代码

4.
简易MAC模块

4.1.
MAC层把数据打包成UDP,UDP协议这里就不详细介绍了.想深入了解的可以看802.3协议,或者找个TCP/IP协议看下就明白了。

用一个case 语句就可以把udp包搞定。这里代码不共享,有兴趣的照着协议写下。

4.2.
协议里的checksum计算方法。

IP头部里checksum 计算例子

例如 随便取20byte IP,以下是16进制数据

45 00 00 30 80 4c 40 00 80 06 00 00 d3 43 11 ac cb 11 12 32

第一步
2byte一组把20byte数据求和

4500+0030+804c+4000+8006+0000+d343+11ac+cb11+1232=0003 47b4

这里结果有一个进位3 那么做加法直到结果为2byte数为止。

所以0003+47b4=47b7

取反此结果就得到checksum =~47b7=b848

共享代码

4.3. 802.3协议定义的8bit CRC32位校验并行算法实现

先把生成多项式列下

G(x) = x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1

对应写成bit序列为
MSB 100000100110000010001110110110111 LSB,顺序就是根据x的幂的高低排的。

然后再用移位寄存器实现此生成多项式。


以上0-31是表示寄存器。

下面就好开始推导并行算法的实现了。

并行的推导其实就是把数据灌入此移位寄存器中,灌入8个数据bit后得到的异或方程就是此生成多项式8bit并行计算32bit循环校验位的方法。

下边只举例

解释C0-C31指的是移位寄存器初始化的数据,D0-D7shift 8shift到移位寄存器中的数据,下面只推导了2次移位还有6此没推大家推推看。

此模块不共享代码,首先如果共享出来大家就不会推导直接拿过来用,推导后再稍微看下802.3就可以把crc encoder decoder代码写出来。



27.jpg


推导过程的表格贴上来乱码,大家可以下载附件有详细的doc.



5.
自定义通信协议以及寻址空间

5.1.
简单定义两种通信包类型,通信数据包和通信配置包。这两个包只是定义在UDP包的基础上的,也就是UDP数据的格式。


Byte序号数据包通信包备注
00xAA0xBB包标示
1~2数据长度从第8字节算起,目前定义为0x3FF配置数据长度从第8字节算起1字节addr[7:0] 2字节addr[15:8]
3数据帧编号0x01 通信包:0x01表示读通信包0x10表示写通信包
0x10
4保留读写页起始地址见读写配置说明可以读写配置数据数据包:如果是读配置的的反馈包,则地址为配置数据的页起始地址。如果是FFT数据那么此值保留。
5
6保留字节标志标志00:配置数据,01:请求配置,02:配置结束,03:状态数据。
7保留字节保留字节
8-1031数据数据1024byte 数据

数据帧编号

例如:FFT1024 1024点的数据,可能需要2个数据帧才能发送完,那么此编号是标志帧数据是否属于同一组1024点数据。此编号根据产生1024数据组数递增。

读写配置说明

读写页地址是以页为基础的,每个page256byte数据。

系统寻址划分


Pageaddr
0x0000~0x01FF16位宽开根号查找表数据0~65535的开方结果。整数8bit小数8bit16bit位宽w/r
0x0200~0x0200见配置PLL
0x0201~0xFFFF保留

配置PLL

0x0200页的256byte是配置PLL数据


Byteaddr
0x020000~0x0200012byte配置Rw/r
0x020002~0x0200032byte配置 Nw/r
0x020004~0x0200052byte 配置LPF 参数K1w/r
0x020006~0x0200072byte配置LPF 参数 K2w/r
0x020008~0x0200FF保留
Send_data_ctrl

模块功能
PC发送FTT数据包

反馈状态寄存器数据给PC

PC发送请求配置命令,以及发送配置结束命令。



现在实现了UDP协议 与简易MAC层 与PC通信
见视频视频还是不看了好..什么也看不清。晚上拍的太模糊..其实是手机太垃圾。

附件中有整体工程但是不包括CRC 编解码模块,在上边已经讲了推导方法,高手略过不用看了,想学习的可以看看802.3把crc写出来。加入CRC 模块后整体就可以与PC通信了。
dis_fft_v01.rar (3.32 MB, 下载次数: 62 )
DOC
数字NPLL频谱显示器设计spec.pdf (418.98 KB, 下载次数: 48 )
感兴趣的顶兄弟下,我会陆续把后边PLL以及FFT模块和上位机显示频谱软件写出来并共享出来。
有了xilinx的FPGA 无所不能其乐无穷啊!
发表于 2012-6-27 16:16:07 | 显示全部楼层
学习学习!
发表于 2012-7-19 00:03:51 | 显示全部楼层
回复 1# laokai


mark
markmarkmarkmarkmarkmark
发表于 2012-7-21 20:13:23 | 显示全部楼层
excellent, great
发表于 2012-7-24 16:49:41 | 显示全部楼层
mark ONE
发表于 2012-7-26 08:46:40 | 显示全部楼层
还行~
发表于 2012-7-27 23:40:42 | 显示全部楼层
学习学习
发表于 2012-8-4 14:26:07 | 显示全部楼层
学习中。
发表于 2012-8-16 10:22:54 | 显示全部楼层
看起来很厉害啊
发表于 2012-9-10 11:50:23 | 显示全部楼层
学习学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 23:24 , Processed in 0.095895 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表