数字电路作为一门专业基础课,除了介绍数字电路的理论知识外,更需要通过配套的实验平台将理论知识和实践环节相结合,培养学生的动手能力和实践创新能力。为此,自主开发了基于 fpga 的数字电路“口袋实验室”。该“口袋实验室”基于目前流行的fpga 芯片开发,已经实际应用于数字电路教学实践中。
1总体设计
“口袋实验室”的电路包括电源、fpga、下载电路、数码管、vga 接口、拨码开关、按键、led 灯和双排针扩展接口。其总体框图见图 1,实物图见图 2。
图 1 系统总体框图
图 2 系统实物图
xc6slx9 是 xilinx 公司的 spartan 系列 fpga, 采用 45 nm 工艺,共有 9 152 个 logic cells、1 430 个slices、90 kb 分布式 ram,共有 144 个引脚,其中102 个是通用 i/o 口,资源相对丰富。xc6slx9 内核供电电压为 1.2 v;i/o 口的电平可以设置为 lvttl、lvcmos、lvds 等多种电压标准;内置高性能的时钟管理模块,1 个 cmt 包含 1 个 pll 和 2 个 dcm, 能进行分频、倍频;xc6slx9 支持主动模式和被动模式,以及 spi、bpi、jtag 等多种配置方式。
设计中预留了 30 个扩展接口,由双排针引出,其中 24 个是 fpga 的通用 i/o,3 个 3.3 v 引脚和 3 个地引脚。串行通信采用 ch340g 串口芯片,用于 fpga 和 pc 机之间的通信。“口袋实验室”拥有 2 个 4 位共阳极数码管、1 个无源蜂鸣器、1 个八位拨码开关、1 个 vga 接口以及 10 颗 led 灯和 6 个按键,可以满足数字电路基本的实验需要。
2电路设计
2.1电源电路
电源系统为整个系统提供能量,是系统的基础。采用 lm1085 芯片提供 3.3 v 电压,采用 ams1117 芯片提供 1.2 v 电压。
考虑到xc6slx9 的 3.3 v 电源和其他外设共用一个电源芯片,为保证其他外设电流突变时不影响xc6slx9 的正常供电, 使用一个功率电感以隔离fpga 和外设的电源。具体电路设计见图 3。
图 3 lm1085 电路和 ams1117 电路
xc6slx9 对电源的要求较高,电源引脚附近需要多个去耦电容,以减小电源瞬变,保证电源完整性。电源部分还设计有 1 颗led 灯用于指示fpga 电源是否正常。
2.2配置电路设计
配置电路一个是使用 jtag 配置的电路,另一个是使用 flash 的主动 spi 配置电路。
2.2.1jtag 配置电路
jtag 配置电路见图 4。
图 4 jtag 配置电路
jtag 的主要引脚 tms、tck、tdi、tdo 经 4.7 kω
电阻上拉,以保护电路。jtag 引脚在印刷电路板(pcb)上通过 14 针 2.0 mm 间距的简易牛角座引出。简易牛角座采用防反插设计,以保证 jtag 连接正确。
program_b 引脚默认上拉,通过按键接地,可以用于 fpga 的软复位。done 引脚上拉,且有 led 指示 fpga 是否配置完成。
2.2.2flash 电路
设计所选用的 fpga 基于 sram 工艺,掉电后不能保存数据,因此在重新上电之后必须从外部的配置存储器加载配置。flash 电路见图 5(a)。mode0 和mode1 的电平决定了 fpga 的配置方式,当 mode0 拉高以及 mode1 拉低时,fpga 使用主动 spi 配置模式。接口电路见图 5(b)。
图 5 flash 电路和 fpga 的 flash 接口电路
2.3串口通信设计
选用 ch340g 作为 fpga 和 pc 机之间通信的转换芯片。ch340g 是常用的usb 转串口的芯片,兼容 5 v 系统和 3.3 v 系统,由于本设计中选用的 xc6slx9 属于 3.3 v 系统,因此 ch340g 的供电电压设置为3.3 v,如果供电电压调整为 5 v,则串口通信将发生故障,数据不能通过串口发送至 pc 机。串口部分电路见图 6。
图 6 串口通信部分电路
2.4 扩展接口设计
为保证“口袋实验室”的扩展能力,在设计时将fpga 的 24 个通用 i/o 口通过双排排针在 pcb 上引出,可供使用者外接电路。
为了防止 fpga 的 i/o 接口接入过高的电压或者通过过大的电流而损坏 fpga,设计中使用双向电平转换芯片 txs0108e 对 fpga 的 i/o 口和外部接口进行隔离,以保护 fpga 芯片。
3实践教学实例
3.1数码管显示实验
实验要求使用数码管显示时间精度为 100 ms 的秒表,最低位数字每 100 ms 加 1。
3.1.1实验硬件电路
“口袋实验室”选用的数码管是 4 位共阳极数码管,其中公共端使用三极管驱动,其余 a、b、c、d、e、f、g、dp 8 个引脚分别和 fpga 的 i/o 口连接。电路如图 7 所示。
图 7 数码管电路
3.1.2fpga 代码设计
fpga 代码设计思路如下:将系统的 50 mhz 时钟分频为 50 hz 的逐位扫描时钟和 10 hz 的计数时钟,最低位通过 10 hz 的时钟进行计数,计数使用8421bcd 码表示,并转化为数码管显示的 8 位二进制代码输出。由于是共阳极数码管,当引脚公共端高电平,其他引脚为低电平时,对应的 led 才会亮。数码管二进制码的最高位为小数点位。实验仿真及实际运行效果见图 8。
图 8 数码管仿真时序图与数码管实验实际运行图
由于实际仿真时间过长, 因此在仿真时缩短了计数的时间。表 1 为 bcd 码与数码管二进制码对应表。
表 1 数字的 bcd 码与数码管二进制码对应表
3.2蜂鸣器控制实验
实验要求通过编程控制无源蜂鸣器,使之在输入不同频率的 pwm 波情况下,发出不同音调频率的声音。
3.2.1实验硬件电路
无源蜂鸣器的硬件电路设计见图 9。
图 9 蜂鸣器电路图
3.2.2fpga 代码设计
无源蜂鸣器输入不同频率的 pwm 会发出不同频率的声音,频率和音调对应见表 2。
表 2 频率和音调对应表
通过 ise 的 clock wizard 将 50 mhz 的系统时钟频率分频为 12 mhz,然后通过计数输出不同的频率, 计数的上限值由拨码开关和按键控制,拨码开关用于选择 3 个音调,按键用于选择各个音调下的 7 个不同频率,以此实现输出不同音调频率的声音。图 10 为蜂鸣器控制仿真图。
图 10 蜂鸣器控制仿真图
74ls181引脚图及功能_逻辑功能及特性
1月29日!赛思将亮相央视财经频道《新型工业化之路——专精特新》节目
python 7个好用的装饰器分享
298.2亿美元的机器人市场,为什么过得有点“惨”?
AMD 将于 2028 年在印度投资 4 亿美元,建设其最大的设计中心
基于FPGA的数字电路设计
京东方175亿LCD厂遭质疑:未投产已落后两代半
比亚迪“眼红”海外电池红利 全球巨头争锋欧洲
洛杉矶未来将强制命令每一辆网约车都只能使用电动汽车
创新实践,复合机器人采摘运输教育沙盘案例研究
5G小基站拓展垂直行业市场大空间
铁丝防护网@享受自己辛福有价值生活
锂电池万能充电器,Lithium-Ion Battery Charger
我国首次超越韩国成为全球最大半导体设备市场
鸿蒙系统支持机型名单
质子交换膜燃料电池应用
双核Cortex-M4 32 位低功耗微控制器主要特性包括哪些?
AR技术的核心框架
华为余承东透露华为操作系统“B计划” 最晚明年春天将可能面世
通用汽车将携手本田开发全新电动汽车电池