谁能看懂这些代码????--!
呵呵~大家别骂我,其实是个很简单的错误程序,(我只学了一个周,属于超级菜鸟)程序如下: 其实就是为了将下面的原理图用VERILOG写出来:可怎么编译就是不过。
module pv1(po1,po2,po3,po4,po5,po6,DSP_PDPINTA,
p1,p2,p3,p4,p5,p6,RCHIGH,IO_FALURE,RCLOCK,IO_UNLOCK);
output po1,po2,po3,po4,po5,po6,DSP_PDPINTA;
input p1,p2,p3,p4,p5,p6,RCHIGH,IO_FALURE,RCLOCK,IO_UNLOCK;
reg po1,po2,po3,po4,po5,po6;
always@(p1 or p2 or p3 or p4 or p5 or p6 or RCHIGH orIO_FALURE orRCLOCK or IO_UNLOCK)
if(!RCHIGH||IO_FALURE||RCLOCK||IO_UNLOCK)
po1<=0;
po2<=0;
po3<=0;
po4<=0;
po5<=0;
po6<=0;
else
po1<=p1;
po2<=p2;
po3<=p3;
po4<=p4;
po5<=p5;
po6<=p6;
else if(p1 xnor p2)
p1<=0;
p2<=0;
else po1<=p1;
po2<=p2;
if(p3 xnor p4)
p3<=0;
p4<=0;
else po3<=p3;
po4<=p4;
if(p5 xnor p6)
p5<=0;
p6<=0;
else po5<=p5;
po6<=p6;
if(!IO_FALURE)
DSP_PDPINTA<=1;
else DSP_PDPINTA<=0;
endmodule
原理图如下:还望高手不吝指点。。。。
http://cache.amobbs.com/bbs_upload782111/files_22/ourdev_507517.jpg
(原文件名:3.jpg) 如果你是要把那个原理图用verilog实现,那么不是用always,而是assign。 我老总说过这样的话:CPLD的误区是能用画图的却偏偏要写成代码! “我老总说过这样的话:CPLD的误区是能用画图的却偏偏要写成代码!”
关键这不是最终原理图,用代码写的话,以后可能会好改动。
“如果你是要把那个原理图用verilog实现,那么不是用always,而是assign”
电平触发的 用assign行吗?还是always好些吧? 建议你还是用原理图吧。
如果非要用verilog,可以去查查门级建模。
写出来的东西估计你一个月之后再看如天书一样。那远不如原理图来的直观。 你这东西能综合就怪了。这种给你原理图了的还是输入原理图吧。
自己设计倒是应该从写代码开始,原理图输入不能适应现在越来越大的设计规模了。 只说语法:
这么多个if-else之间的语句没有加begin/end? 组合逻辑用assign写很直观。
assign a=b?c:d; 要用行为语言描述,必须搞清楚它的功能。这样的图,谁能一下子知道,它是译码器还是别的什么“器”?
只能用结构化的描述方法。 呃。。。。
我也觉得应该是用assign语句。
毕竟从你的电路图看好像不是时序逻辑,而是一些与门非门做的组合逻辑。 时钟接地的D触发器? 楼主的编程风格有问题:
1.always 写的组合逻辑电路, 赋值用的非阻塞赋值
2.电路里面有触发器时序逻辑电路,楼主把时序和组合写在一个块。
3.多条语句中应该加入begin end
建议 时序电路单独编写模块
在顶层模块例化调用即可 顶层里面就剩下组合逻辑电路,用assign语句就可以搞定 楼主,你这个图太亲切了,我2000年左右使用1K10的时候就这么干过,不过比你这个还复杂,但是刚毕业,干劲十足。可是过了一年自己都看不懂了,我的同事要把代码从Altera转到Quicklogic费了很多劲才弄过去。
画原理图的确直观,但是对于后期维护和移植都很不方便,尤其是如果规模很大的时候,劝你还是劝劝老板用Verilog或者VHDL写吧 【2楼】 yy43102328
积分:101
派别:
等级:------
来自:
我老总说过这样的话:CPLD的误区是能用画图的却偏偏要写成代码!
你们老总真可爱. 好久没来这里了,谢谢大家的关注。祝大家新年快乐~ 万事如意。
呵呵 我现在看起来也好亲切的感觉。
特别感谢 EDWIN~~~ 谢谢你的指点。
一会我就改。。。。。哎~ 太菜了,说的自己无地自容了 呵呵
页:
[1]