资源描述:
《matlabC语言verilog之间的区别.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言、verilog与Matlab语言的运算符号的区别C语言verilogMatlab功能描述*,/,+,-乘除一般不能直接写*,/,+,-乘,除,加,减%%rem(x,y)取余(在matlab中%表示注释)!!(逻辑非)~取反即非&&&&&逻辑与
2、
3、
4、
5、
6、逻辑或>,<,==>,<,==>,<,==大于,小于,等于>=,<=>=,<=(<=也是非阻塞赋值符号)>=,<=大于等于,小于等于!=!=~=不等于===!==条件相等和条件不相等~~无位反相&&无按位逻辑与||无按位逻辑或^^无异或~^~^无同或>>>>无右移<<<<无左移一行注释://多行注释:/**/同c语言一行注释:%
7、注释?:?:无等同于if-else叙述{}beginend等同于{},执行语句多于一句就要用beginend包含起来;verilog中{}是拼接运算符,例:{a[0],b[14:0]}{{}}为复制算子:{3{2‘b10}}结果是6’b101010forkjoin也等同于{},与beginend的区别是,前者内部的语句是并行执行的,后者内部的语句是顺序执行的。十进制:直接表示八进制:以0开头,例如0123;十六进制:0x开头十进制(’d或‘D):16’D255十六进制(‘h或’H)二进制(‘b或’B)八进制(‘o或’O)数据格式(在一个整常数后面加上一个字母u或U,认为是无符号整型;
8、在一个常数后面加上l或L,表示长整型)#后面加上数值,表示延时多秒个周期C语言、verilog、Matlab语言的关键字的区别C语言verilogMatlab功能描述parametera=1’b1;状态机里面都用parameter参数定义,模块中a代表二进制1definea=1’b1;a代表1’b1parameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效if(条件a){执行指令A};elseif(条件b){执行指令B};……else{执行指令N};if()begin语句end;elseif()begin语句e
9、nd;……else;注:verilog的elseif是分开的if表达式语句elseif表达式语句else语句endif条件判断语句for(表达式的;表达式样;表达式3){执行语句}或者for(循环变量赋初值;循环条件;循环变量增值){执行语句}硬件描述语言一般禁用for语句。只在测试模块中使用。格式同C语言。for(循环变量赋初值;循环条件;循环变量增值)begin执行语句;endfor变量=向量语句end例子:x=0;fori=1:1:10x=x+1;endfor循环语句while(表达式){执行语句}或者do{语句}同for语句;格式同C语言;但没有dowhile。while()
10、beginwhile表达式语句endwhile循环语句while(表达式)执行语句;end无repeat(表达式)begin执行语句;end无repeat循环语句switch(表达式){case常量表达式1:{语句1}case常量表达式2:{语句2}case常量表达式3:{语句3}.........default:{语句n+1}}case语句case()x:;y:;z:;default:;endcase用的最多。Switch表达式Case常量表达式1语句1Case常量表达式2语句2Case常量表达式3语句3………Otherwise语句endswitch分支语句Break:结束for或
11、while整个循环Continue:结束for或while单次循环无Break:结束for或while整个循环Continue:结束for或while单次循环Break和while语句类型标识符函数名(形式参数表列){声明部份语句部分}例:Intmax(intx,inty){intz ;z=x>y ?x :y ;return(z);}function<返回值的类型或范围>(函数名);<端口及数据类型说明>;<语句>;Endfunction例:function[7:0]getbyteinput[15:0]addressbegin执行语句;getbyte=result_expressti
12、on;endendfunction说明:1定义数时至少有一个输入参量2必须有一条赋值语句给函数中的一个内部变量赋与函数的结果值,该内部变量与函数名相同function[out1,out2,...]=funname(in1,in2,...)例:function[mean,stdev]=stat(x)n=length(x);mean=sum(x)/n;stdev=sqrt(sum((x-mean).^2/n));function语句assigna=b;连续赋值