Skip to content

Digital logic design FinalProject CS207 数字逻辑(105/100)满分project

Notifications You must be signed in to change notification settings

GhostFrankWu/SUSTech_CS207_Final-Project_2020f

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SUSTech_CS207_Final-Project_2020f

Full Score(105 out of 100) Digital logic design FinalProject present by 菜鸡互啄 team
2020年秋季学期的数字逻辑满分项目(105/100),完成了全部基本功能和要求的Bouns功能,蜂鸣器可设计任何乐曲播放,完善了滚动显示,增加了“无聊模式”和炫酷的彩灯,以及密码登录功能。

队员及分工(分工明确均匀):

数码管显示及脚本主力:@WLS2002
蜂鸣器及Led彩灯主力 :Siyu Liu(刘思语)
主程序逻辑及代码综合:@GhostFrankWu

sources文档说明

文件 作用 备注
main 程序主框架 综合了其他模块及主程序的基本逻辑
music 蜂鸣器 配有脚本可以自动将mp3序列化
led 彩灯 若干不同动感闪烁模式
show 数码管 可上下左右滚动显示,并有过渡动画
src 货道 货道切换状态机
key16 小键盘输入 设有防抖功能

功能介绍

完成了文档中的全部基础和bonus功能,故在此仅介绍文档外的功能

  • 滚动显示: 不仅可以左右滚动显示长文本,切换货道时也会根据按键向上/下先滚动一半旧文本消失,再滚动另一半新文本显示,最终切换到新文本。
  • 蜂鸣器 : 实现了一个自动转换频谱的脚本,可以将mp3文件转换成蜂鸣器可播放的二进制流,在售货机的不同模式中有若干首不同歌曲播放。
  • 无聊模式: 在开机或长待机(30S)无交互之后,售货机进入无聊模式,此时数码管进入屏保熄灭,彩灯动感闪烁并播放乐曲,吸引顾客前来购物。
  • 彩灯 : 每个模式下,下方的led灯条都会以不同的模式闪烁,增加售货机的美观性。
  • 密码登录: 除了插入钥匙(拨码开关)进入管理员模式之外,还可以通过小键盘输入正确的密码(7355608)来进入管理员模式,并按1退出,为忘带钥匙的管理员提供便利。
  • 安全和便捷性 : 自动过滤存货为0的货道(不显示),但是补货模式下可以正常补货。支付成功或失败都会正常找零。多处交互设计进行边界检查,阻止用户使用溢出式的攻击薅羊毛(一些未作最大限制的溢出边界是由于用户不可能在10秒内按下64次小键盘,防抖输入下10秒的理论上限是50次按键,其余的溢出采用了 查输入合理性、增大计数器位宽 方式防范)。

开发计划 & 早期设计 & 需求分析

大致分为两个阶段,①框架和模块设计-》②汇总调试

接下来引用的部分为最早期程序的主体框架设计文档,大家依据框架需求完善自己的部分,之后讨论汇总

素材 有空时候可以随手收集几个,多多益善

  • 长背景音
    付款期间 查询阶段 抽奖音乐
  • 短消息
    付款成功 付款超时 付款取消 小键盘(16个)和拨码开关(11-31个)音效

需求 模块设计

  • 滚动显示信息
    输入格式:商品的每条信息长文本(编码困难) 二选一
    输出: e.g. 06 COLA 11 8.5 (滚动显示)

  • 倒计时 输入: 0-63 秒
    输出: 秒级 每隔1秒输出两个十进制数字,表示当前倒计时显示的时间
    毫秒级 每隔1毫秒输出四个十进制数字。

-小键盘IO

定义 标准IO

  • 商品:
属性 值的范围 备注
货道号 0-63
名称 8字母 0-8位可显示的字母数字组合
剩余量 0-63
价格 0-63 考虑是否添加小数位,或一个布尔量表示是否有0.5元

系统结构图(请采用结构化设计的方法,确定各子模块的功能,模块间的接口定义)

mode

系统执行流程(数据流向、状态转移图、功能伪代码等)

flowChart

测试结果演示视频

下附答辩视频链接,如播放卡顿烦请下载后观看演示了绝大部分基本功能,故不再附上图片。
http://106.52.237.196/videos/dd2020.mp4

国内下载地址:https://pan.baidu.com/s/1BjAsGOZ85YH3BcE2oWqI1g?pwd=7qwf 提取码:7qwf

PS.视频开头片段为程序的逻辑电路图

总结

问题及解决方案

  • music对于时间和节奏的把控比较困难,需要反复听,反复调整才能达到一个流畅的效果。提示音的音效和音乐因为播放的长度不同需要分开写,并且在很多模式的情况下,要对其进行分类讨论,容易混淆。
  • 灯光的变换要利用它的多样性写很多不同种的模式,也用到了很多的if else,其中的begin end经常错位导致编译错误。
  • 对verilog规范性不注意,经常忘记声明reg的长度导致reg无法到达一些case。

提升空间

  • 网络(扫码支付) 注意到开发板提供了网络接口,我们已经搭建好了公网服务器和对应处理脚本,可以通过完善网络模块实现扫码支付(目前为自己编写的二维码生成脚本,后期也可与Wechat或Alipay的api对接操作),但是网络需要自行计算MAC地址及CRC等,期待完善更多网络协议相关知识后实现本功能。
  • VGA 可以与另一个选题相对接,扩大售货机显示范围,还可以显示支付二维码
  • 杂项 抽奖功能类似老虎机,或者拍整数秒打折等方式(这个功能其实已经写了一多半,但是最终被去掉了)。 管理员热修改密码,修改商品价格和总货道数等(已经定义了相关parameter变量,更改为reg热修改即可)。

About

Digital logic design FinalProject CS207 数字逻辑(105/100)满分project

Resources

Stars

Watchers

Forks