云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > FPGA课程设计报告 - 图文

FPGA课程设计报告 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/4 17:26:32

VerilogHDL等)2种。传统设计方法一般是采用直观、容易理解的原理图输入。但是此方法移植性不好,当所选芯片升级之后,所有设计的原理图都需改动。现在工程师常用的设计方法是用硬件描述语言完成所需设计,其特点主要表现为自顶向下设计。[3]相比于原理图设计方法,自顶向下设计方法主要有以下优点:

1)从功能描述到物理实现完全符合设计者的设计思路。 2)设计可以重复利用,能应用在不同的产品设计中。

3)容易修改设计。设计者可以在门消耗以及时序2方面对FPGA的结构进行比较,从而选择最佳的设计方案。

4)设计周期短,效率高。采用自顶向下设计方法的效率可以达到传统原理图设计方法的2~4倍。鉴于自顶向下设计方法的诸多特点,本系统软件部分采用自顶向下模块化设计思想进行设计,主要包括IIC通信模块、温度显示模块等。 4.1 IIC通信模块

FPGA和LM75A两者之间的通信严格按照IIC总线管理定义的规则。在LM75A检测温度时,须先对LM75A初始化,即对其配置寄存器写入控制字进行工作模式的设定。写配置寄存器时序如图6所示。

图6 读温度寄存器时序

通信开始前,IIC 总线一定要有空间或者不忙,这就要求总线上的器件必须释放SDA和SCL线。主机启动起始信号S 后,开始对配置寄存器写入要选择的器件地址,硬件电路图中的A0, A1, A2与地相接,因此器件的逻辑地址是“000”,再将“00000001”写入寄存器地址指针,等待器件响应一个系统时钟周期后,再进行工作模式的写入。完成上述步骤后,LM75A开始工作,若在正常工作模式下,每隔100 ms进行一次转换(模数转换),转换的结果存放在Temp寄存器中。FPGA读取Temp寄存器中的数据,对其处理后,就能得到温度数据。FPGA读取Temp寄存器中的数据也需严格按照IIC 总线管理定义的规则。读取温度数据的时序图如图7所示。

由于系统时钟为50 MHz,为了方便分频,选择用800kHz的频率作为LM75A

7

的时钟频率,即SCL时钟频率为800kHz。由时序图8可知,62个时钟周期即可完成一次读操作;该计数器控制SDA相对于SCL的相位关系,此时SDA的时钟频率为400kHz。

图7 读温度寄存器时序 4.2状态机的设计

表3 状态机状态表

图8 状态转换图

4.3 温度显示模块

系统采用6位八段共阳数码管显示温度。为使6位数码管动态显示温度,可

8

采用动态扫描的方法依次点亮数码管,当扫描速度达到某个范围时,可利用人眼视觉暂留的特点,使人感觉4位数码管是在同一时间显示。动态扫描的频率最好大于50 Hz,每个数码管显示的时间要适中,不能过长或过短,时间过长则会出现闪烁的情况,时间过短发光二极管电流的导通时间也短,会导致数码管亮度变暗。一般扫描时间控制在1~2 ms左右。FPGA产生的扫描时间程序如下。

// 产生数码管扫描的计数器, 扫描时间为0.1ms always @ (posedge sys_clk or negedge sys_rst_n) begin

if ( sys_rst_n ==1'b0) scan_cnt <= 16'b0; else

scan_cnt <= scan_cnt + 16'b1; end

其中,scan_cnt为16位寄存器,存储计数值,记一次数的时间为1 ms。syc_clk是系统时钟信号,sys_ret_n是系统复位信号,c1~c4为数码管位选信号,seg_a ~seg_h分别接数码管的发光二极管,其中seg_h控制小数点。lm75_temp是FPGA从器件LM75A采集到的11位温度数据经过计算后的数据,其算法是:

lm75_temp <= (buff[10:0]*125)/10; //存储在缓存器buff中的11位数据经计算后,赋值给lm75_temp寄存器。由于lm75_temp里面寄存的为二进制数据,所以需先转成为BCD码,才能输出显示。 4.4 系统整合

在用Verilog HDL编程中,系统软件部分采用模块化设计。上文的IIC通信模块和温度显示模块为系统独立模块,故需编写顶层模块(命名为top)将2个模块整合起来。top模块能定义各个管脚接口,从而使系统与外界进行通信。top模块通过顶层调用方法将iic(FPGA和LM75A通信模块)和led(数码管扫描显示模块)组合成为一个完整的系统。将完整的程序下载到FPGA芯片,系统即可测量环境温度。

9

图9 顶层方案图

五.仿真波形及说明

图10 仿真波形 仿真结果分析:

Clk为外部输入时钟,为50MHZ,初始值为1,;rst_n为系统复位,初值为0;key_rd为读信号,低电平有效;scl为iic的时钟线;读sda为iic的数据线;count为一个8位计数器,每计数31,clk_sys翻转一次,即分频产生800K的系统时钟;,当clk_sys 或 rst_n为下降沿时,若总线忙,flag为1,scl翻转,产生近400K的时钟,空闲时flag为0,scl为高;clk_sys 上升沿或rst_n为下降沿;data_out为0,flag为1,sda_buffer 为1,state转为0状态,发送控制字,寻找从机,写控制字10010000,从机发送应答信号sda为0,仿真显示为高阻状态,之后写指针,选定温度寄存器,从机发送应答sda为高阻,flag为0;再次启动,写控制字,sda为10010001,进行读操作,等待从机发送应答信号,sda为高阻态,flag为0;主机读数据,读数据高8位,发送应答,再读低八位,读数据时flag为低电平,sda为高阻态。之后发送非应答信号,scl为高电平时,sda由低变为高电平,即为停止。 六.设计小组的分工及安排

设计小组成员:范亚君 胡花欣 段郁丹

10

搜索更多关于: FPGA课程设计报告 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

VerilogHDL等)2种。传统设计方法一般是采用直观、容易理解的原理图输入。但是此方法移植性不好,当所选芯片升级之后,所有设计的原理图都需改动。现在工程师常用的设计方法是用硬件描述语言完成所需设计,其特点主要表现为自顶向下设计。[3]相比于原理图设计方法,自顶向下设计方法主要有以下优点: 1)从功能描述到物理实现完全符合设计者的设计思路。 2)设计可以重复利用,能应用在不同的产品设计中。 3)容易修改设计。设计者可以在门消耗以及时序2方面对FPGA的结构进行比较,从而选择最佳的设计方案。 4)设计周期短,效率高。采用自顶向下设计方法的效率可以达到传统原理图设计方法的2~4倍。鉴于自顶向下设计方法的诸多特点,本系统软件部分采用自顶向下模块化设计思想进行设计,主要包括IIC通信模块、温度显示模块等。 4.1 IIC通信模块 FP

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com