8位寄存器verilog代码_【ZYNQ Ultrascale+ MPSOC FPGA教程】第三章 Verilog基础模块介绍 (上)...

原创声明:

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

简介

本文主要介绍verilog基础模块,夯实基础,对深入学习FPGA会有很大帮助。

数据类型

常量

整数:整数可以用二进制b或B,八进制o或O,十进制d或D,十六进制h或H表示,例如, 8’b00001111表示8位位宽的二进制整数,4’ha表示4位位宽的十六进制整数。

X和Z:X代表不定值,z代表高阻值,例如,5’b00x11,第三位不定值,3’b00z表示最低位为高阻值。

下划线:在位数过长时可以用来分割位数,提高程序可读性,如8’b0000_1111

参数parameter: parameter可以用标识符定义常量,运用时只使用标识符即可,提高可读性及维护性,如定义parameter width = 8 ; 定义寄存器reg [width-1:0] a; 即定义了8位宽度的寄存器。

参数的传递:在一个模块中如果有定义参数,在其他模块调用此模块时可以传递参数,并可以修改参数,如下所示,在module后用#()表示。

例如定义模块如下调用模块

module rom 
#(
parameter depth =15,
parameter width =8
)
(
input[depth-1:0] addr ,
input[width-1:0] data ,
output result
);
endmodule

module top();
wire[31:0] addr ;
wire[15:0] data ;
wire result ;
rom
#(
.depth(32),
.width(16)
)
r1
(
.addr(addr),
.data(data),
.result(result)
);
endmodule

Parameter可以用于模块间的参数传递,而localparam仅用于本模块内使用,不能用于参数传递。Localparam多用于状态机状态的定义。

变量

变量是指程序运行时可以改变其值的量,下面主要介绍几个常用了变量类型

1.Wire 型

Wire 类型变量,也叫网络类型变量,用于结构实体之间的物理连接,如门与门之间,不能储存值,用连续赋值语句assign赋值,定义为wire [n-1:0] a ; 其中n代表位宽,如定义wire a ; assign a = b ; 是将b的结点连接到连线a上。如下图所示,两个实体之间的连线即是wire类型变量。

fb29d887aa6eddb129d0b6ee7ced7521.png

2.Reg 型

Reg 类型变量,也称为寄存器变量,可用来储存值,必须在always语句里使用。其定义为

reg [n-1:0] a ; 表示n位位宽的寄存器,如reg [7:0] a; 表示定义8位位宽的寄存器a。如下所示定义了寄存器q,生成的电路为时序逻辑,右图为其结构,为D触发器。

module top(d, clk, q);
input d ;
input clk ;
outputreg q ;

always@(posedge clk)
begin
q <= d ;
end
endmodule
61b9fa1f35acf717e8475861c323755f.png

也可以生成组合逻辑,如数据选择器,敏感信号没有时钟,定义了reg Mux,最终生成电路为组合逻辑。

module top(a, b, c, d, sel, Mux);
input a ;
input b ;
input c ;
input d ;
input[1:0] sel ;
outputreg Mux ;

always@(sel or a or b or c or d)
begin
case(sel)
2'b00: Mux = a ;
2'b01: Mux = b ;
2'b10: Mux = c ;
2'b11: Mux = d ;
endcase
end

endmodule
4c90ac0be0e05361a76a2e0aa22bc36f.png

3.Memory型

可以用memory类型来定义RAM,ROM等存储器,其结构为reg [n-1:0] 存储器名[m-1:0],意义为m个n位宽度的寄存器。例如,reg [7:0] ram [255:0]表示定义了256个8位寄存器,256也即是存储器的深度,8为数据宽度。

运算符

运算符可分为以下几类:

  1. 算术运算符(+,-,*,/,%)

  2. 赋值运算符(=,<=)

  3. 关系运算符(>,=,<=,==,!=)

  4. 逻辑运算符(&&,||,!)

  5. 条件运算符(?:)

  6. 位运算符(~,|,^,&,^~)

  7. 移位运算符(<>)

  8. 拼接运算符({ })

算术运算符

“+”(加法运算符),”-“(减法运算符),”*”(乘法运算符),”/”(除法运算符,如7/3 =2),“%”(取模运算符,也即求余数,如7%3=1,余数为1)

赋值运算符

“=”阻塞赋值,”<=”非阻塞赋值。阻塞赋值为执行完一条赋值语句,再执行下一条,可理解为顺序执行,而且赋值是立即执行;非阻塞赋值可理解为并行执行,不考虑顺序,在always块语句执行完成后,才进行赋值。如下面的阻塞赋值:

代码如下:激励文件如下

module top(din,a,b,c,clk);

input din;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: emmc.rar是一个压缩文件的格式,其中包含了一些与emmc(嵌入式多媒体卡)相关的代码资源。这些资源包括vhdl、fpgaverilog的源码,都是用于开发和设计与emmc通信的硬件电路的。 VHDL是一种硬件描述语言,用于描述数字电路中的行为和结构,可以用于实现emmc的硬件接口电路。FPGA即现场可编程门阵列,是一种可编程逻辑器件,可以用于实现各种数字电路,并且可以通过加载VHDL源码来实现emmc相关功能。Verilog也是一种硬件描述语言,与VHDL类似,可以用于实现emmc的硬件接口功能。因此,emmc.rar中的VHDL和Verilog源码是为了在FPGA上实现emmc的通信功能。 HS400是一种emmc的传输协议,具有高速数据传输的特性。因此,emmc.rar中的源码可以用于实现emmc与其他设备之间的高速数据传输。 CSDN文库是一个在线的技术资源共享平台,其中包含了各种技术文档和代码资源。emmc.rar中的代码资源在CSDN文库上共享,可以供开发者们学习和参考。 综上所述,emmc.rar中的vhdl/fpga/verilog源码是用于实现emmc的硬件接口电路和高速数据传输的。这些资源在CSDN文库上共享,供开发者们学习和参考。 ### 回答2: emmc.rar是指一个压缩包文件,其中包含有关emmc主题的一些文件和资源。其中也包括了一些与emmc相关的VHDL、FPGAVerilog代码。 VHDL是VHSIC硬件描述语言(Very High Speed Integrated Circuit Hardware Description Language)的缩写,它是一种用于描述和设计数字电路的硬件描述语言。 FPGA是现场可编程门阵列(Field-Programmable Gate Array)的缩写,它是一种可编程逻辑门电路,可以根据用户的需要配置其内部的逻辑门电路和连线。 Verilog是一种硬件描述语言,用于描述和设计数字电路,以及进行硬件仿真。 因此,emmc.rar中的VHDL、FPGAVerilog代码很可能是用于与emmc(嵌入式多媒体卡)相关的设计和实现。这些代码可能包括与emmc通信、控制和处理相关的功能。 关于hs400fpga和其他代码类资源,它们可能是一些用于FPGA开发的相关资源和代码示例。hs400fpga可能是指用于高速接口HS400(High-Speed Interface 400)的FPGA实现。 CSDN文库是一个知识分享平台,用户可以在上面分享和下载相关资源、文档和代码。因此,emmc.rar_vhdl/fpga/verilog_verilog_源码_hs400fpga-其它代码类资源-csdn文库可能是指在CSDN文库上分享的与emmc、VHDL、FPGAVerilog和HS400相关的源代码和其他代码类资源。用户可以通过CSDN文库下载和学习这些资源,用于相关的开发和设计工作。 ### 回答3: emmc.rar是一个文件,其中包含了一些与VHDL、FPGAVerilog相关的源代码和其他代码类资源。CSDN文库是一个网络平台,在这个平台上你可以找到各种技术文档、源代码教程等。在emmc.rar文件中,有一些与HS400FPGA相关的代码资源。 VHDL是一种硬件描述语言,用于描述数字电路和系统的结构和行为。FPGA是现场可编程门阵列,它是一种可编程逻辑器件,可以根据需要修改内部逻辑。Verilog也是一种硬件描述语言,与VHDL类似,可以用于设计电路和系统。 在emmc.rar文件中,可能包含了一些与这些技术相关的源代码和设计示例。这些源代码可以帮助开发者理解和实现相关的功能。也许还包含了一些其他代码类资源,比如常用的函数库、驱动程序等。 CSDN文库是一个很方便的资源平台,你可以通过搜索或者浏览来找到你需要的技术文档和代码资源。在CSDN文库中,你可以找到很多关于VHDL、FPGAVerilog教程和指南,这些资源可以帮助你学习和应用这些技术。 总的来说,emmc.rar文件是一个包含了VHDL、FPGAVerilog相关的源码和其他代码类资源的文件。通过CSDN文库,你可以获取更多与这些技术相关的文档和资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值