如何制作自己的微控制器?

Posted

技术标签:

【中文标题】如何制作自己的微控制器?【英文标题】:How can I make my own microcontroller? 【发布时间】:2010-10-12 13:46:08 【问题描述】:

我已经使用 GAL 芯片完成了一些工作,并对芯片进行了编程以执行简单的命令,例如添加、加载、移动、异或和输出,但我想做一些更像真正的微控制器的东西。

我该怎么做呢?我已经阅读了一些关于 FPGA 和 CPLD 的内容,但不是很多,因此我正在寻找一些关于获得什么以及如何开始对其进行开发的建议。

【问题讨论】:

+1 表示兴趣。你看过这里吗? fpga4fun.com 【参考方案1】:

我曾经看过一本教科书,它逐步介绍了如何使用 TTL 芯片构建机器。这与 PDP-8 具有相同的指令集,非常 - 我的意思是 非常 - 简单,因此实际的机器架构很容易以这种方式实现。

PDP-8 FAQ 提到了一本书:“The Art of Digital Design,”第二版,作者 Franklin Prosser 和 David Winkel(Prentice-Hall,1987,ISBN 0-13-046780-4)。它还提到人们在 FPGA 中实现它。

鉴于这种 CPU 架构极其简单以及 PDP-8 代码或参考实现的可用性,它可能是一个很好的热身起点。

另外,我的一个熟人在 FPGA 上实现了一个拇指(削减 ARM)作为一个由 Steve Furber(一位著名的 Acorn 校友)运行的大学项目。考虑到这可以压缩成足够小的格式用于大学项目,它也可能是一个好的开始。

【讨论】:

【参考方案2】:

Xilinx 的 FPGA 有一个 MicroBlaze 和一个 PicoBlaze 软控制器。后者是免费的,而 IIRC,Microblaze 需要付费。 顾名思义,PicoBlaze 是一款小型处理器,有其局限性,但 OTOH 足够紧凑,可以容纳run on a CPLD。无论如何,一个不错的处理器可以帮助您入门。 Pablo Bleyer 有一个与 PicoBlaze 兼容的 PacoBlaze。 PacoBlaze 是用 Verilog 编写的(正如 Adam 所说,它不如 VHDL 常见)。

【讨论】:

【参考方案3】:

查看here 寻找一本好的维基书籍。我在教电子工程时写了一些课程作业,但我找不到。在我教学时,大多数学生都乐于使用 Xilinx Foundation 软件包中的原理图捕获工具。他们现在已经转向 ISE 和 WebPACK。您可以免费下载 WebPack,它很有用,其中包含原理图捕获和仿真。

如果您真的想大放异彩,请学习 VHDL 或 Verilog(VHDL 似乎在我工作过的地方更常见,但这只是一小部分地方)并编写设计代码,而不是通过 GUI 输入。

如果您对数字逻辑设计(和一些 HDL)有任何了解,我认为您可以在大约 2 天内拥有一个在 VHDL 中模拟的功能性 8 位微处理器。在那段时间里,你不会构建任何非常快速或非常强大的东西,但这是一个很好的成长起点。如果您必须了解数字设计,请花几天时间了解这些工具的工作原理并模拟一些基本逻辑电路,然后再进行 uP 设计。

开始学习数字系统的基础知识,以及如何构建二进制加法器。继续构建一个 ALU 来处理加法、减法和、或、异或等,然后构建一个序列器来从 RAM 读取操作码并将它们提供给执行单元。

您可以对指令集设计感兴趣,但我建议您从真正简单的开始,直到您对发生的事情有所了解,然后将其扔掉并重新开始使用更复杂的东西。

一旦您的设计模拟得很好,您就可以衡量其复杂性并购买适合的设备。您应该查看您选择的设备系列的开发系统。选择比开发所需更大的设备,因为能够在运行时添加额外的仪器来调试它是件好事,而且您几乎肯定不会在设备上安装它的早期阶段优化您的设计。

编辑:Colin Mackenzie 有一个关于 uC 设计和一些 FPGA 板以及其他一些东西的很好的教程。

【讨论】:

【参考方案4】:

为了玩转软核微处理器,我喜欢 Digilent 的 Spartan 3 Starter Board,因为它有 1M 的静态 RAM。你知道,SDRAM 和 DDR RAM 更难发展。

LED、开关和简单的串行接口是调试和通信的优势。

正如有人已经指出的那样,OpenCores.org 是查找工作示例的好地方。我在大学期间使用Plasma uC 写了一些论文。

【讨论】:

【参考方案5】:

在大家搜索了一些非常有用的链接后,我偶然发现了this Wikiversity 课程。

第一句话是,“您有没有想过构建自己的微处理器?”

【讨论】:

【参考方案6】:

你需要一个大 fpga 来换一个小 mcu。

如果你需要像 AD 这样的东西,你需要一个带有正确硬件块的 fpga。

您需要一个软核才能放入 fpga。

但是在这个项目之前,只玩一个普通的 MCU 怎么样, 所以你有点知道你要去哪里?一些来自 Atmel 的 AVR:s 怎么样。

【讨论】:

但是你并不像你的问题所暗示的那样绿色......也许是你的问题的更新。【参考方案7】:

您可以在此站点获得 pic 微控制器的免费样品。最后我知道,您甚至不必支付运费。

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=64

【讨论】:

OP 的问题是关于学习设计 PIC 本身,而不是使用类似的东西。【参考方案8】:

微控制器可以像 ROM 一样简单(指令*2^x +(时钟相位)是地址,输出是控制信号,你可以开始了)。或者它可以是具有三臂和分支预测支持硬件的复杂哈利野兽。

您能否详细说明您的愿望?

【讨论】:

我可能想实现类似于 AVR 的东西,尽管我知道它会简单得多。当我使用 GAL 芯片时,我所参加的课程很快就达到了 GAL 的物理极限,我想知道下一步我可以采取什么措施来制作更强大的东西。【参考方案9】:

您可能想看看OpenCores.org,这是一个用于开源 IP 内核开发的“伪造”站点。另外,考虑给自己买一个像one of these 这样的开发板来玩。

尽管Avalda 正在开发用于为 FPGA 编译 F# 的工具,但大部分工具生态系统都围绕着 VHDL。

【讨论】:

以上是关于如何制作自己的微控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何将pdf数据发送到微控制器

VHDL微处理器/微控制器

如何延迟 avr 微控制器的组装?

AVR 微控制器记忆游戏

微控制器有哪些型别

如何在微控制器硬件复位之前保存一些数据?