FPGA入门学习记录(1)----自动售货机(VM_FSM)

本文是作者学习FPGA的初步记录,通过设计自动售货机的FSM来阐述Verilog HDL语法与状态机编写,包括阻塞与非阻塞赋值、驱动源的理解、状态图绘制。同时,介绍了Vivado 2018.1与Modelsim SE10.5联合仿真的常见问题与解决,强调了编程规范如case语句中的default和if-else的使用,以及在硬件仿真中的重要性。
摘要由CSDN通过智能技术生成

综述

在写一个自动售货机状态机并仿真,上板的过程中遇到了各种问题。在解决这些零碎的问题后,在防止自己忘记这些经验以及用电子介质取代纸质记录的目的下,写下此文。
这些零碎的经验主要分VeilogHDl语法积累及状态机编写总结,Vivado2018.1软件使用积累,一些规范与约定等方面。

VeilogHDL语法积累&状态机编写总结

1. 阻塞与非阻塞:

(1)代码角度体会
 // block
 reg a=0;
 reg b=1;
 reg c;
 always
 begin
 		a=b;	
 		c=a;
 end
 //the outcome: a=1 c=1
//no-block
reg a=0;
reg b=1;
reg c;
always
begin
		a<=b;	
		c<=a;
end
//the outcome: a=1 c=0
(2)硬件角度解释

非阻塞过程相当于两个串联的触发器:
非阻塞

阻塞:
阻塞

2.驱动源

在两个always块中对同一reg型变量赋值,转化为硬件电路即该reg变量有两个驱动源。这种写法在编译及仿真时不会报错,但在综合及实现时会报错。

3状态图及状态机

从我已知的FPGA入门教材看来,状态机是基本功一类的存在。基本功等于及其重要、基础,写复杂的时序电路少不了它。
于是入门重点不可避免的落在状态机上:

(1)自动售货机的FSM

编写一个状态机,首先是要从已知有时序的逻辑功能中抽象出状态、条件两个最重要的基本要素,根据他们的关系画出状态图。具体为:1,抽象出状态,2,找出状态转移条件,3,画出状态图。

设计一个自动饮料售卖机,饮料10分钱,硬币5分10分两种,并考虑找零。

分析自动售货机可能的状态:1,未投币;2,被投5分等待下一次投币;3,被投10分。
看似有三个状态&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值