verilog是一门好的语言,很多人都使用其进行开发。以前小有了解,但是没有做过大项目。最近一次用到多控制多接口的HDL描述。其实以前一直都是主动描述。很多时候都觉得特别简单。这一次设计涉及得一些东西让我很是郁闷!也让我纠结了许久,主要的问题是verilog不是我的常用开发语言。长时间的C语言开发使我习惯了C语言的开发模式和思想。这让我很是郁闷。但是对于C语言转到verilog开发是最简单的,但是也是最复杂的。简单在于语法相近,复杂在于思维习惯的不习惯。以前很多时候都觉得if...else...如果是else我就可以不关心一般C的习惯就是直接省掉。但是后来这种习惯让我很是纠结。有一个大牛给我说了一句关于硬件语言设计的一个思想,那就是你设计过程中你每写一条语句就应该反映到你的头脑里面是一个电路,那里需要寄存器、那里需要锁存器、那里接的是与门、等等。在你的头脑里面应该都有一个map。确实,开始设计的时候总是觉得自己想的是C语言中MCU是怎样执行的。其实对于简单的期间控制实现是比较小儿科的。后面我才知道。以前还以为那个是设计核心。
现在重点的分析两个东西,verilog中怎样检测到上升沿。这在vhdl中不是难事。但是在verilog中却要通过语法来解决。不过我发现外面人才很多啊!但是我比较欣赏的一种方式是:用两个寄存器来存下这个信号的两个状态,然后用合并语句来合并两个信号。最后来检测信号的状态。利用的是寄存器的延时特性。代码详见:always@(posedge clk) --通过时钟来控制延时如果没这条语句是不行的哦
begin
temp <= insig;
oldtemp <= temp;
if({temp,oldtemp} == 2'b10) --检测到上升沿的到来
...
end
还是觉得这条语句多牛的。
设计过程啊,那是千幸万苦啊!不过一定要坚持,坚持住。只要过了那段迷茫期后面其实你就越来越顺手了。我开始从事一个大的系统设计的时候还是真的有点觉得怎么到处都是刺儿啊!完全就乱来!后来细细的把框架画出来,一步步的调试。到头来还是成功了,只是时间花的比较多去了!前几天还真的有要放弃的心啊!呵呵!
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |