FPGA学习:状态机化简&Testbench

FPGA学习 :状态机及其化简&Testbench

这里练习状态机利用《Verilog HDL高级数字设计》中的一个示例设计,该设计将从低位到高位串行输入的BCD码转换为从低位到高位串行输出的余三码,利用状态机判断每位的状态然后根据输入的数据判断输出数据。具体题目如下: 题目要求 说句实话,这个题目有点为了用状态机而用状态机的意思了,要将串行输入BCD以余三码串行输出的方式我能想到的其实很简单,完全不需要状态机,用四个DFF做缓冲串转并,然后把转完的数加上0011即可,最后再用四个DFF并转串输出。 但是人家既然要求了要用状态机,那就做呗,顺便研究下状态机化简😅

阅读更多

FPGA学习番外篇:在MacOS上编译和仿真verilog

FPGA学习番外篇:在MacOS上编译和仿真verilog

一年没更新了,过去的一年里一直忙着比赛和课业,一直没有更新博客里的内容,从今天开始再填完埋下的坑吧!

至于为什么会有这个奇怪的番外篇,是因为最近更新了装备,整了台X86的MacBook Pro,为了方便我写verilog和仿真看波形,整合了网上的很多教程最终写出来的。

这其中还包括利用yosys对写好的verilog进行综合的环节,但我想了下,在macOS下烧写fpga十分困难或者对我来说几乎不可能,因此我就虽然写了这部分教程,但我基本没用过综合,非要综合的话利用docker或者虚拟机安装vivado不香嘛😅

  • OS:macOS Big Sur 11.15.1
  • Device:MacBook Pro 13 (2020)
  • Software:VScode
阅读更多

Verilog HDL 简介与基本语法 2

FPGA学习 阶段一:Verilog HDL 简介与基本语法 2

1. 模块及其结构

Verilog的基本设计单元是“模块”block,一部分描述接口,另一部分描述逻辑功能,比如:

1
2
3
4
5
6
7
8
module block(a,b,c,d);
input a,b; //描述接口
output c,d;

assign c = a | b; //描述逻辑功能
assign d = a & b;

endmodule
以上是一个简单的模块,首先描述了四个接口a,b,c,d module
阅读更多

Verilog HDL 简介与基本语法(1)

FPGA学习 阶段一:Verilog HDL 简介与基本语法(1)

FPGA硬件开发路线学习规划:

由于想学习FPGA的相关内容,同时给数字电路打点基础,于是借助着B站上西安电子科技大学的视频开始学习Verilog HDL这门硬件描述语言,在学完语言后,将按照**《FPGA设计技巧与案例开发详解》**这本书上的相关内容在一块核心为Altera Cyclone IV的开发板上完成基本例程,之后在网上寻找相关项目学习、开发

1. Verilog的基本概念

  • Verilog是一门类C语言,语法非常接近C,将电路设计转变为程序设计
  • Verilog的代码对应的是现实中的一个硬件,这个过程叫“综合”,类似于C语言的编译
  • Verilog的代码是并行执行的
阅读更多

字典(dict)型数据结构

字典(dict)型数据结构

在C语言中,结构体可以将变量与变量之间相关联地储存起来,Python中也有与之类似的一种结构,叫做字典(dict),它能将键key与值value一一对应然后储存起来。 ## 1.字典的建立 前面学过的总结一下: 列表list = ['element_1','element_2',...] 元组tuple = ('element_1','element_2',...) 字典的表示方式为:dict = {'key_1':'value_1','key_2':'value_2',...}

阅读更多