赞
踩
注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料,将在公众号CTO Plus发布,请关注公众号:CTO Plus
Verilog是一种硬件描述语言,用于FPGA(现场可编程门阵列)的设计。在Verilog中,模块是基本的组织单元,模块中包含了多个块,块是Verilog中的基本执行单元。其中,顺序块、并行块是常用的语言特性,用于控制代码的执行顺序和组织代码结构。本文将介绍Verilog中的顺序块、并行块和块名的基础知识。
顺序块是Verilog中的一种基本结构,用于按照书写顺序依次执行语句。顺序块的语法如下:
always @ (posedge clk) begin
// 顺序块语句
语句1;
语句2;
......
语句n;
end
在上面的代码中,使用“always”关键字定义了一个时序块(顺序块),其中“@(posedge clk)”表示在时钟上升沿时执行,当时钟信号(clk)上升沿到来时,会执行begin和end之间的语句。顺序块中的语句按照书写顺序依次执行,可以用于控制状态机的状态转移、寄存器的更新等操作。
块名即该块的名字,一个标识名。其作用后面再详细介绍。
块内声明语句可以是参数声明语句、reg型变量声明语句、integer型变量声明语句、real型变量声明语句。
顺序块特点:
并行块是Verilog中的另一种基本结构,用于并行执行多条语句。并行块的语法如下:
always @ (*) begin
fork
// 并行块语句
语句1;
语句2;
语句n;
join
end
在上面的代码中,使用“fork”关键字定义了一个并行块,其中的语句可以并行执行,使用“join”关键字表示并行块的结束。当任何一个输入信号发生变化时,会执行begin和end之间的语句。并行块中的语句可以并行执行,可以用于实现多个逻辑操作,例如计算、比较等。
在fork join块内,各条语句不必按顺序给出,因此在并行块里,各条语句在前还是在后是无关紧要。
块名即标识该块的一个名字,相当于一个标识符。
块内说明语句可以是参数说明语句、reg型变量声明语句、integer型变量声明语句、real型变量声明语句、time型变量声明语句、事件(event)说明语句。
并行块特点:
块名是Verilog中的一个特性,块名的作用是用于引用一个块,并方便代码的编写和阅读。块名的语法如下:
my_block: begin
// 块语句
end
在上面的代码中,使用“:”符号定义了一个名为“my_block”的块,可以在其他地方引用该块。例如,可以在其他块中使用“my_block”引用该块,如下所示:
always @ (posedge clk) begin
my_block;
end
在上面的代码中,当时钟信号(clk)上升沿到来时,会执行my_block中的语句。块名可以用于组织代码结构,方便代码的编写和阅读。
在VerilgHDL语言中,可以给每个块取一个名字,只需将名字加在关键词begin或fork后面即可。这样做的原因有以下几点:
基于以上原因,块名就提供了一个在任何仿真时刻确认变量值的方法。
casez语句用来处理不考虑高阻值z的比较过程,casex语句则将高阻值z和不定值都视为不必关心的情况。
如果用到if语句,最好写上else项。如果用case语句,最好写上default项。遵循上面两条原则,就可以避免发生这种错误,使设计者更加明确设计目标,同时也增强了Verilog程序的可读性。
综上所述,顺序块、并行块和块名是Verilog中常用的语言特性。顺序块按照书写顺序依次执行,而并行块可以并行执行多条语句。块名可以用于引用块,方便代码的编写和阅读。在FPGA设计中,需要根据具体的场景选择合适的块类型,以实现预期的功能。
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接
推荐阅读:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。