内容发布更新时间 : 2024/12/22 16:31:20星期一 下面是文章的全部内容请认真阅读。
貌似学弟们对HDL有很多疑问,很多问题都是我当时也迷惑过的。希望能给写帮助。 1 HDL 是硬件描述语言,C语言的那套理论可以借鉴,尤其是针对verilog,但是大家考的
只是VHDL,有较多的不同;
2 HDL的理解可分为仿真和综合,一定要分开来对待。因为二者往往不一致,很多例子,相
信大家都知道了。仿真的时候你可以用C语言那套顺序执行的理论来分析,查查什么是
事件队列,你就可以把信号的来回变化分析得很透彻;
3 但是,分析得太透彻也没什么用。考试的时候不会纠结于让你去分析一个本身就乱七八
遭的代码,那样老师也太没水平了;
4 所以在复习的时候,那些函数的类型属性、值属性没必要每一个都弄得很透彻,VHDL中
一大堆的语法大部分都是没什么用的!而且多数是不可以综合的,个人认为,只需要把
可综合的东西分析清楚(具体找个代码来看看,比如quartus自带的模板)。不过呢,仿
真也必定会考个大题,至少wait, I/O读写,after,时钟的生成要能不看书写出来。 5 考试的时候必要的代码模板一定要有,但不能贪多,常见的比如计数器、状态机(不同
结构的,比如三段式),随机存储器,多路选择器等要有。这样就用不着来回翻书; 6 同时,请相信,用很简单的关键字就可以写出可以用的代码,但使用的代码大多都是 可以配置的,所以懂得层次化的声明,FOR循环,参数化处理也要有模板;
7 紧密结合硬件,VHDL只不过是一个桥梁,搭建起程序和硬件实现的桥梁。对哪些代码可
综合,哪些只用于仿真要胸有成竹。不要过分追求语法细节,力求简洁明了的语句解决
实际问题。
8 把问题分析清楚了,再开始写代码,尤其是面对状态机的时候。
我是A卷 一.填空
1.VHDL程序由哪5个部分组成 2.VHDL程序主要由哪2个部分组成 3.子程序由哪些部分组成
4.给个entity,让你把in,out这种填一下 5.0,1,X,Z,U,-等信号的意义 6.语句由顺序和并发语句组成 其他不记得了...大家补充....
二.选择
1.block块内语句是并发执行的.
2.一个信号被重新赋值,但是没有发生改变,s'active为ture,s'event为false 其他不记得了...大家补充~
三.简答题
巴西人那本书的第4章课后习题前两题
四.程序题
1.一段程序,说明功能,画出电路实现
是一个多路选择器+移位寄存器...程序很好懂
2.题目要求同1.程序稍微复杂,用到些映射,port map等,但是还是比较好懂 电路实现功能貌似和1也是一样的...不知道对不对...
3.一段程序,用到状态机,让你画出状态机的图,同时说明程序作用
3个状态,图比较好画,entity的名字是什么ram,程序应该就是控制ram读写的模块. 4.一段文字描述,要求了几个功能,要求写一段代码.不是很难.
5.给出时序图,clk,q0,q1是输入信号,out是输出信号,要用代码实现这样的时序图.这个不 难.关键要写个测试模块test_bench...好象是紫皮书的第8章...这个比较恶...
整套卷子做下来,感觉难度不算很大,但是做的还不是很顺手...最可恶的是A卷有段程序没 有...第2段程序缺了很重要的两段.浪费了我不少时间...郁闷... 水平比较菜,写的不对的地方还请大牛指正:) --
好象小朋友们 都很迷茫 不知道会考什么 (好吧 我当年也不知道要考什么)
这里 仅按去年的卷子(理论上今年也应该类似)的出题思路 简单说一下吧
考试 主要还是考VHDL语言相关的东西 FPGA/CPLD之类的器件上的东西 很少(印象中10分
左右 十道判断OR选择题)
语言部分
和以前考 C/C++差不多 看代码 写代码 之类的 好象还有改错(好像~~~~) 平时实验都是自己做的 肯定OK
我们那年考的时候 很多代码 绿皮书上 可以找到的 大概改下就能用 此外
语言这块 很重要的一个点 就是 信号 和 变量的 区分~ 绿皮书上有表格总结的 很精髓
还有什么 什么可综合 什么不可综合 之类的~
FPGA/CPLD 等器件的 不记得什么了
印象中 当年打了 20+元的资料(考完了~版上免费叫卖~居然没人甩我~~-_-!) 但 最后 有用的 不超过 1块钱~~~-_-!!! FPGA/CPLD的区别 应该是必考的
别的~ 都不怎么记得了 抓大放小 本来就没几分 还能蒙~~~(平时少占座~RP肯定OK~ 囧~ ~ )
另外 推荐 COYBOY大~ 367天前的一贴
http://bbs.sjtu.edu.cn/bbscon?board=EE&file=M.1231685093.A&num=5168
PS:说句和考试无关的~
HDL 这东西~ 大家以后做硬件设计 总会打交道的~
只要牢记 你拿HDL 是在 画电路 而不是在 写C代码~~ 对所有你写下的HDL代码所综合出来
的东西(可综合部分)能了然于胸~ 这东西就没什么问题了 说到底 VHDL 就是一工具~~~而已 --