【问题标题】:Should FPGA design be integrated into a Computer Science curriculum? [closed]FPGA 设计是否应该集成到计算机科学课程中? [关闭]
【发布时间】:2010-11-15 04:03:37
【问题描述】:

如果计算机科学是关于算法开发的,因此不仅限于处理器供应商的想象力,而是所有实际可计算的领域。那么,几乎非常适合研究元胞自动机的 FPGA 不应该被认为是学习计算机科学的有效平台。我觉得当前课程薄弱的一个特别感兴趣的领域是并行性,它与编程语言的集成。我认为编译器设计可以从让学生处理 FPGA 的显式并行性的课程中受益。

【问题讨论】:

  • 我在哪里学习 FPGA 和 DSP 开发已经是 CS 课程的一部分。
  • 太棒了!我认为从我读过的文献来看,欧洲倾向于对 CS 采取不同的看法。 Dijkstra 从那里开始!
  • 这将是cseducators.stackexchange.com 的主题(尽管它仍处于私人测试阶段,因此最容易通过area51.stackexchange.com/proposals/92460/… 进入)

标签: compiler-construction computer-science theory fpga


【解决方案1】:

老实说,我认为它会很有用,但我意识到这是一个很难回答的问题。问题真的不在于 FPGA 课程是否有价值(它显然会),而是从课程中删除一些其他课程并用它代替它是否足够有价值?我怀疑大多数课程无法腾出足够的时间来涵盖它,而不是事后的想法。

【讨论】:

  • 或者将其添加为研究生级别的课程,供那些对其进行整体调查的人使用。
  • 对我来说绝对听起来像是研究生材料。虽然它显然应该在研究生课程中进行探索,至少在表面上。
  • 我认为将它添加到 CS 课程的好处之一是它不应该仅限于单个课程,而是涉及到各个课程。自动机、算法、架构等。这将需要更多样化的方法来教授这些课程,这不会将它们限制为基于冯诺依曼的概念。
  • 看到整个 CS 序列使用并行语言并使用并行机器(包括 FPGA 和 GPU)肯定会很有趣。
【解决方案2】:

作为一名 CS 学生,我会喜欢 FPGA 课程。但是,每个人都按自己的方式设置,不想修改课程。它在理论上相当沉重,他们认为微控制器和 FPGA 需要太多的电力知识等知识才能对 CS 学生有用。

因此,我正在辅修电气工程。

【讨论】:

  • 计算机科学被教条和自负所压倒。我是一名计算机专业的毕业生,我有一位教授告诉我,除非它有键盘和显示器,否则它就不是计算机。我在考试中得了 90 分,因为我拒绝给他一个我知道是错误的答案。我确信现代 CS 程序不会犯同样的错误,但他们会根据过去的教条犯错误。微控制器和 FPGA 是计算机科学的计算机和有效平台,无论是在理论上还是在实践中。
  • 正如您提到的真正问题是您不能只添加 FPGA 的 101,您确实需要顺序/组合逻辑系统和计算机体系结构/组织方面的低级背景。在计算机工程项目中,这个背景通常会单独包含 3 或 4 门课程。
【解决方案3】:

天哪,没有。我在最后一年上了一门 FPGA 课程,这意味着我在编译代码时不得不坐上几个小时。学生将简单的代码放到板上所涉及的工作是可怕的。直到今天,“地点和路线”这两个词都让我脊背发凉。

【讨论】:

  • 今天还不错,我已经能够使用相对较慢的笔记本电脑进行各种 VGA 类型的设计。我正在做 Bresham 的 Lines 和基于字符生成器的 Text 来显示信息。诸如并行排序算法之类的东西不需要那么长时间来编译。编译肯定比 C 慢,但随着现代系统和工具的速度,它现在对于大多数课程涵盖的问题类型都非常实用。另外,做一个功能模拟很快,对于大多数任务来说已经足够了。例如,我没想到本科生会编译 PCI 控制器。
  • @Pete Eddy:我在 HandelC 中做 FIR 和 IIR 滤波器。真正的问题是包袱太多,我们什么都没学到。
  • 我确实认为这些工具可以发挥作用。很多工作。但话又说回来,当我使用几个免费软件包时,我也会有同样的感觉,比如我用过的 python 工具感觉不太“正确”。 (我完全承认,“感觉正确”完全是主观的,所以请不要生气。)但老实说,它们并不比任何其他开发工具更难适应。这有点像使用基于整数的微而不是浮点服务器机架。 Impulse C 是一种允许 CPU 与 FPGA 协同设计并具有分区控制的工具,并在工业中实际使用。
  • 再一次,编译时间随着处理器的加速而变得更好。在现代机器上并没有那么糟糕。我们有一个基于 PCI 的设计,这需要一段时间,但形式验证技术比大多数基于软件的技术要好。一旦你让它正确地模拟它通常可以工作,所以如果你遵循良好的设计实践,你就不会像在软件中那样编译。对于学生计算机科学家来说,仅此一项就是一个很好的收获。
【解决方案4】:

提供。推荐它。 不需要

【讨论】:

  • 好吧,也许不需要带实验室的核心 FPGA 课程。但是这些概念需要在讲座中讨论,线性“流水线”并行性和广泛并发并行性的概念对于让学生为当我们遇到 MHz 限制和摩尔定律时变得主流的架构做好准备是非常必要的.这是推进整个计算机科学专业的必要条件。
  • @Pete:是的,需要提出这些概念,但我不确定 FPGS 是否是执行此操作的工具。 --- 除非您正在编写“实验性” CS 课程,或者您所在的学校在经济上或其他方面永远不会成为某人的唯一选择(如麻省理工学院和朋友)。
  • 目前 FPGA 的主要问题是缺乏 CS 影响力,而 CS 在线性编程方法中的一个主要问题是基于 50 年前的概念,这些概念通常只是重新散列并应用了不同的术语给他们。这两种情况都会阻碍进步。
【解决方案5】:

FPGA 非常酷。我有两个问题:

  • 什么是持久价值的想法,学生毕业后 20 年仍将继续工作?

  • 您要消除哪些内容来为 FPGA 课程腾出空间?

“知识消失后剩下的就是教育。”

【讨论】:

  • 没有什么需要消除的,假设您可以在处理器上做任何事情而不是在 FPGA 上做不到的事情是幼稚的。然而,事实并非如此。 FPGA 可以为您提供执行任何任务所需的确切硬件,您不受比特大小或数据格式的限制。我们已经习惯于在我们的处理器的限制下工作,以至于我们看不到它们强加给我们的盒子。插入排序成为逻辑设计中的 N 阶操作。合并排序可以比提供数据的速度更快。它需要的是成熟度和语言进步,即 CS。
  • @Pete:谁说过 FPGA 受到限制。我再说一遍:他们很棒。但课程修订是一场零和游戏。任何给定的部门都只有有限的教员。如果你在 FPGA 上添加一门课程,你就必须在其他地方放弃一门课程。
  • 这些技术并不相互排斥。我们只是将编程作为执行计算机科学的工具来教授,但正如 Dijkstra 所说,“计算机科学与计算机无关,正如天文学与望远镜有关。”我们已经在计算机中设想了数据结构,并且经常将实现与计算机联系起来,而不是数据结构本身的要求。就 20 年后的 FPGA 知识而言,AMD 已经在处理器插槽中构建了带有 FPGA 的系统。 IBM 正计划将 FPGA 技术直接集成到 PowerPC 中。这是计算的未来。
  • CS I 和 II 简介。扩展到并行技术。数据结构,计算机和 FPGA 实现。绝对必要的算法分析。 Automata Direct 实现,而不是软件模型。数值表示、汇编、计算机体系结构...检查、检查、检查。编译器设计不仅适用于计算机,它也直接适用于FPGA。操作系统能够直接衡量不同硬件设计对操作系统概念实施的影响。
  • 我们通常从事计算机科学并将其硬塞到 CPU 中。而不是设计机器来执行计算机科学。我们反其道而行之的例子显示了显着的好处,浮点算法、Blitter 芯片、硬件图形引擎、DMA 控制器等。
【解决方案6】:

作为一名刚从计算机工程专业毕业并参加过多门嵌入式系统课程的学生,我觉得它非常有用。这将有助于拓宽标准编程的视野,并帮助 CS 学生了解嵌入式系统开发中最重要的方面,即效率。管理内存至关重要,从基于 FPGA 的课程中​​获得的这些方面可以延续到桌面应用程序开发中。我不必等待数年编译代码,但“Place and Route”仍然不是我最喜欢的短语哈哈。放弃一门课程对我来说很难说,因为我不是 CS 而是 CpE 并且不知道确切的课程。但是,我目前正在研究桌面应用程序,我在 FPGA 课程中获得的一些技能影响了我的工作。这是我的两分钱。享受

【讨论】:

  • 布局和布线速度很慢,但是编译我的一位同事卡住的 ADA 设计所需的时间更少! 50 年代和 60 年代的恐龙被 70 年代的大型机取代,然后是 Minis,然后是 PC,PC 正在将部分市场拱手让给手持设备和视频控制台市场。高清电视上的电子邮件和网络(或任何替代它的东西)是不可避免的。 PC 也将褪色并让位于更小的计算机,就像它的前辈一样。计算机工程是未来的好领域。我认为你的技能比 CS 更有前途。
【解决方案7】:

作为刚毕业的计算机科学专业的毕业生,我想说 FGPA 更多地属于计算机或电气工程领域。诚然,CS 是关于算法的,但它也是关于计算理论、数据结构、人工智能等等等等。我认为 FGPA 太具体了,不能成为必需的组件。我参加的并发编程课程的水平要高得多,但我相信它对并行性进行了不错的介绍。

事实上,我希望我可以参加很多高年级课程,但没有空间:量子计算、编译器构建、实时系统等。所有这些也都很好纳入核心课程的候选人。

【讨论】:

  • FPGA 提供了算法的物理体现,​​这是计算机编程中闻所未闻的优雅。即 FPU 只不过是在硬件中实现的数据结构。与处理器相比,神经网络设计更适合 FPGA。数据结构获得物理寄存器,算法直接与它操作的数据相关联。 Dijkstra 会为优雅而欣喜若狂,并且正式验证对 FPGA 设计的重要性。处理器可以做的任何事情都可以使用 FPGA 设计技术来实现。这就是你设计处理器的方式。
  • 我同意。它只是更多的计算机/电气工程,并且需要大多数计算机科学程序没有并且不想拥有的硬件知识。我在我的程序中没有接近任何 HDL,因为他们倾向于对任何“实施”细节嗤之以鼻(无论好坏)。它肯定不会在有关图灵机和自动机理论的讨论中占有一席之地。
  • 我是 CS 专业的,不幸的是,当我学习数字设计时,是在电路板上使用 TTL 逻辑来教授数字设计的。我在那门课上的成绩比 95% 的 EE 都高。您实际上可以在 FPGA 中制作自动机理论中谈到的一些“机器”。关键是它与处理器一样有效。当谈到硬件设计如何直接影响他们如何实施软件时,阅读 Dijkstra 很有趣,而且在某些情况下,他似乎对硬件设计决策有意见。
  • 实际上,让我对这个概念感兴趣的一件事是想到将流水线式词法分析器/解析器实现为硬件/软件代码设计。状态机驱动两者并与自动机相关,FSM 是 FPGA 设计的理想选择。 Mealy/Moore 机器是现代数字设计的基础。
  • 但是您不需要现代数字设计来理解状态机或 CS 中的大多数东西。对于一些需要物理表示正在讨论的内容的人来说,这可能会让事情变得更清楚,但我来自一个数学系,他们嘲笑愚蠢的工程师必须对所有事情都保持物理:) 总的来说,我只是要在转换成本以及将硬件引入不强调硬件的程序中的容易性方面不同意您的意见。我可以看到你喜欢你的 FPGA,你的热情确实让我希望我在我的必修硬件课程中能更多地接触它们。
【解决方案8】:

是的,FPGA 设计应该以某种形式集成到 CS 课程中。至少作为数字设计或并行计算课程的实验室。现代 FPGA 不再是一堆可配置的逻辑门。它们是具有多核处理器和丰富外围设备的片上系统 (SoC)。 我看到越来越多的具有CS学位且几乎没有硬件经验的工程师在FPGA上进行嵌入式设计。为了说明我的观点,请查看 Xilinx 论坛上Embedded Solution section 中的讨论。

【讨论】:

  • 是的,也许这就是大多数人没有得到的。我们在我的办公室用 FPGA 设计完全取代了基于处理器的系统。所有过滤和处理都在逻辑上完成,设计比它所取代的系统更准确、更先进和更快。我们还有另一种设计,它包含一个软 ARM 内核,并使用 FPGA 将外围设备包裹在它周围,以完全符合要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 2010-11-08
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多