草庐IT

verilog常见语法记录(一)

RTL例子moduleled( inputwirein1, inputwirein2, inputwiresel, outputregout //输出控制LED灯);//输入只能是wire型变量输出可以是wire型变量也可以是reg型变量//如果输出是在always块中被赋值(即在“//如果输出在assign语句中被赋值(即在“=”的左边)就要用wire型变量always@(*)//always@(sel,in1,in2)//"*"为通配符,表示只要if括号中的条件或赋值号右边的变量发生变化,则立即执行下面的代码//"*"在此always@中等价于“(sel,in1,in2)”写法,使用alw

verilog常见语法记录(一)

RTL例子moduleled( inputwirein1, inputwirein2, inputwiresel, outputregout //输出控制LED灯);//输入只能是wire型变量输出可以是wire型变量也可以是reg型变量//如果输出是在always块中被赋值(即在“//如果输出在assign语句中被赋值(即在“=”的左边)就要用wire型变量always@(*)//always@(sel,in1,in2)//"*"为通配符,表示只要if括号中的条件或赋值号右边的变量发生变化,则立即执行下面的代码//"*"在此always@中等价于“(sel,in1,in2)”写法,使用alw

4.2 Verilog 过程赋值

关键词:阻塞赋值,非阻塞赋值,并行过程性赋值是在initial或always语句块里的赋值,赋值对象是寄存器、整数、实数等类型。这些变量在被赋值后,其值将保持不变,直到重新被赋予新值。连续性赋值总是处于激活状态,任何操作数的改变都会影响表达式的结果;过程赋值只有在语句执行的时候,才会起作用。这是连续性赋值与过程性赋值的区别。Verilog过程赋值包括2种语句:阻塞赋值与非阻塞赋值。阻塞赋值阻塞赋值属于顺序执行,即下一条语句执行前,当前语句一定会执行完毕。阻塞赋值语句使用等号=作为赋值符。前面的仿真中,initial里面的赋值语句都是用的阻塞赋值。非阻塞赋值非阻塞赋值属于并行执行语句,即下一条语

4.2 Verilog 过程赋值

关键词:阻塞赋值,非阻塞赋值,并行过程性赋值是在initial或always语句块里的赋值,赋值对象是寄存器、整数、实数等类型。这些变量在被赋值后,其值将保持不变,直到重新被赋予新值。连续性赋值总是处于激活状态,任何操作数的改变都会影响表达式的结果;过程赋值只有在语句执行的时候,才会起作用。这是连续性赋值与过程性赋值的区别。Verilog过程赋值包括2种语句:阻塞赋值与非阻塞赋值。阻塞赋值阻塞赋值属于顺序执行,即下一条语句执行前,当前语句一定会执行完毕。阻塞赋值语句使用等号=作为赋值符。前面的仿真中,initial里面的赋值语句都是用的阻塞赋值。非阻塞赋值非阻塞赋值属于并行执行语句,即下一条语

0.3 Verilog 代码规范

不经意间看到几年前自己写的FGPA设计,代码风格勉强说的过去,但是逻辑设计方面的安全隐患比比皆是。许多初学者编写Verilog代码,基本都是按照C语言的思维和风格去设计,造成了很多不规范的共性问题。本节主要总结一些不规范且危险的Verilog设计。主要针对可综合的数字设计,testbench是仿真程序,一般情况下要求不是很严格。代码规范要讲述的内容与编码风格是不一样的。编码风格只是建议,设计者可以不按照本教程编码风格的建议,随心所欲的畅写代码。只要逻辑正确,电路安全,哪怕写成柳絮满天飞的风格,编译器能正常编译正常仿真即可。设计者可以高傲的说,写自己的代码,让别人猜去吧!代码规范是在一定程度上必

0.3 Verilog 代码规范

不经意间看到几年前自己写的FGPA设计,代码风格勉强说的过去,但是逻辑设计方面的安全隐患比比皆是。许多初学者编写Verilog代码,基本都是按照C语言的思维和风格去设计,造成了很多不规范的共性问题。本节主要总结一些不规范且危险的Verilog设计。主要针对可综合的数字设计,testbench是仿真程序,一般情况下要求不是很严格。代码规范要讲述的内容与编码风格是不一样的。编码风格只是建议,设计者可以不按照本教程编码风格的建议,随心所欲的畅写代码。只要逻辑正确,电路安全,哪怕写成柳絮满天飞的风格,编译器能正常编译正常仿真即可。设计者可以高傲的说,写自己的代码,让别人猜去吧!代码规范是在一定程度上必