sv编程语言_SV语言学习笔记----数据类型1

作者主要从事FPGA开发,但是对IC验证非常感兴趣。于是开始学习System Verilog语言,本专栏是作者学习的笔记,一方面可以加深学习的记忆,另一方面是做个总结,方便查阅。今天的内容主要介绍SV的基本数据类型。在学习一种编程语言的时候,首先需要了解语言的基本数据类型。

1.内建数据类型

在Verilog中常使用reg和wire两种数据类型来表示寄存器和网线。而在SV中使用logic来替代这两种数据类型,方便验证工程师使用。但是需要注意,接口是双向的,就要使用wire。logic可以表示4种状态X,Z,0,1。Z表示的是高阻态,X表示的是不确定态,0表示的是低电平状态,1表示的是高电平。

除了向logic这种四值逻辑数据类型,还有二值逻辑数据数据。与logic相对应的就是bit。bit。bit只可以表示两种状态:0和1.

四值逻辑类型:logic,integer,reg,wire,tri;

二值逻辑类型:bit,byte,shortint,int,longint。

按照有符号和无符号分:

有符号类型:byte,shortint,int,longint,integer;

无符号类型:logic, bit, wire, reg, tri。

四值逻辑类型的默认值为X。

例1

logic[7:0]   a = 8'b1000_0000;     //十进制数据为128

byte b = 8'b1000_0

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的AXI-Full Slave BFM模块的SV代码: ``` module axi_full_slave_bfm ( input logic aclk, input logic aresetn, // AXI4 signals input logic [31:0] araddr, input logic [7:0] arlen, input logic [2:0] arsize, input logic arvalid, output logic arready, input logic [31:0] rdata, input logic [1:0] rresp, input logic rvalid, output logic rready, // Memory interface signals input logic [31:0] mem_addr, input logic [31:0] mem_write_data, input logic [31:0] mem_read_data, input logic mem_write_en, input logic mem_read_en ); // AXI4 slave state machine enum logic [2:0] axi_state; parameter IDLE = 3'h0, ADDR = 3'h1, DATA = 3'h2, RESP = 3'h3; // AXI4 slave registers logic [31:0] addr_reg; logic [31:0] data_reg; logic [1:0] resp_reg; // Initialize the AXI4 slave state machine initial begin axi_state <= IDLE; end always_ff @(posedge aclk) begin if (!aresetn) begin // Reset the AXI4 slave state machine axi_state <= IDLE; addr_reg <= '0; data_reg <= '0; resp_reg <= '0; arready <= '0; rready <= '0; end else begin case (axi_state) IDLE: begin // Wait for a valid AXI4 read request if (arvalid) begin // Save the read address and move to ADDR state addr_reg <= araddr; axi_state <= ADDR; arready <= '1; end else begin arready <= '0; end end ADDR: begin // Wait for the address phase to complete if (mem_read_en) begin // Start the data phase and move to DATA state data_reg <= mem_read_data; axi_state <= DATA; end end DATA: begin // Wait for the data phase to complete if (rready && rvalid) begin // Save the read data and move to RESP state resp_reg <= rresp; axi_state <= RESP; end else begin rready <= '1; end end RESP: begin // Wait for the response phase to complete if (rready && rvalid) begin // Send the read response and move to IDLE state rresp <= resp_reg; rdata <= data_reg; axi_state <= IDLE; end else begin rready <= '1; end end endcase end end // Memory interface always_comb begin // Write data to memory if (mem_write_en) begin $mem_write(mem_addr, mem_write_data); end // Read data from memory if (mem_read_en) begin mem_read_data <= $mem_read(mem_addr); end end endmodule ``` 该模块包含一个AXI4从设备状态机和一个简单的内存接口。当从设备接收到读请求时,它将等待地址阶段完成,然后开始数据阶段,并将读取的数据保存在数据寄存器中。一旦数据阶段完成,从设备将等待响应阶段完成,并将读取的数据和响应发送回主设备。内存接口支持读写操作,并使用了$mem_read和$mem_write系统任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值