Verilog学习——verilog的介绍

verilog学习——verilog的介绍

一.介绍

Verilog是一种硬件描述语言,用于以代码形式描述数字系统和电路。
在开发verilog之前,用于描述电路设计和验证的主要语言是VHDL。

Verilog与VHDL相比较:

  1. 更简单的语法;
  2. 更好的支持行为建模;
  3. 更高级别抽象:可使用模块和端口等概念来描述数字电路;
  4. 更好的工具支持;verilog提供一系列继承开发环境和仿真工具,可以更好的设计和验证数字电路。

Verilog和C与Java的比较:

1, 目的不同:verilog是描述数字电路和系统,c和java是编写在计算机上运行的软件。
2, 语法不同。
3, 执行不同:verilog代码被编译成硬件配置,c和Java被编译成机器代码。
4, 测试和验证不同:Verilog通常用于在物理实现之前模拟数字系统的行为,
5, 设计嵌套:在Verilog中,设计可以创建为模块,并且可以重复使用,c和Java不可以;

二.概念

硬件原理图:是显示如何连接组合门以实现特定硬件功能的图表,
描述硬件功能的语言是硬件描述语言。
验证:通过不同的方法进行检查,最广泛的验证方法是电路仿真。
所有仿真均由EDA(电子设计自动化)软件工具执行,Verilog设计RTL被放置在称为测试台的实体中。
Verilog代码:所有代码都应在关键字Module和endmodule中描述;
Verilog部分模板:

module [design_name] ( [port_list] );

	[list_of_input_ports]
	[list_of_output_ports]

	[declaration_of_other_signals]

	[other_module_instantiations_if_required]

	[behavioral_code_for_this_module]
Endmodule

三.芯片设计流程

VLSI代表超大规模集成,是一种将成千上万个晶体管组合到单个芯片中的技术。
ASIC(专用集成电路):是一种集成电路 (IC),旨在执行特定任务或功能。通常用于需要满足特定要求的高性能应用。
芯片设计流程
Requirement:
收集需求,估计最终产品的市场价值,评估完成项目所需的资源数量。
Specifications:
收集规范,抽象地描述要设计的芯片的功能、接口和整体架构;
Architecture:
芯片的整体架构,时钟频率、功率和性能要求等;
Digital design:
使用硬件描述语言从功能、性能和其他高级问题方面分析设计;
Verification:
验证功能正确性。
Logic synthesis:
将设计转为具有组合门和触发器等真实元素的硬件原理图。
Logic equivalence:
检查gate level netlist 和RTL的逻辑等效性。
Placement and routing:
将netlist输入到物理设计流程中,在EDA工具的帮助下完成自动布局和布线。
Validation:
验证样品芯片。

四.芯片抽象层

设计抽象层:

  1. 顶层是系统级架构,定义各种子模块并对其分组;
  2. 每个子模块都用硬件描述语言编写;
  3. HDL被转换为门级原理图;
  4. 使用EDA工具在硅中布局晶体管;

设计风格:

  1. 自下而上
  2. 自上而下
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
序列检测器是一种电路,用于检测输入信号序列是否符合某种特定的模式。在Verilog HDL语言中,可以使用状态机来实现序列检测器。以下是一个简单的序列检测器的Verilog HDL代码示例: ```verilog module sequence_detector( input clk, // 时钟信号 input reset, // 复位信号 input data, // 输入数据信号 output reg match // 匹配信号 ); // 定义状态 typedef enum logic [1:0] { STATE_IDLE, // 空闲状态 STATE_S1, // 状态1 STATE_S2, // 状态2 STATE_S3 // 状态3 } state_t; // 定义状态转移表 parameter [3:0] TRANS_TABLE [0:3] = '{4'b0000, 4'b0001, 4'b0010, 4'b0100}; // 定义当前状态变量和下一个状态变量 reg [1:0] state, next_state; // 初始化状态为IDLE initial begin state = STATE_IDLE; end // 定义状态机逻辑 always @ (posedge clk, posedge reset) begin if (reset) begin state <= STATE_IDLE; end else begin state <= next_state; end end // 定义状态转移逻辑 always @ (*) begin case (state) STATE_IDLE: begin if (data) begin next_state = STATE_S1; end else begin next_state = STATE_IDLE; end end STATE_S1: begin if (!data) begin next_state = STATE_IDLE; end else if (data) begin next_state = STATE_S2; end end STATE_S2: begin if (!data) begin next_state = STATE_IDLE; end else if (data) begin next_state = STATE_S3; end end STATE_S3: begin if (!data) begin next_state = STATE_IDLE; match = 1; end else begin next_state = STATE_S3; end end endcase end endmodule ``` 这个序列检测器可以检测输入数据信号是否符合“1101”这个模式。输入数据信号通过data端口输入,匹配结果通过match端口输出。当输入数据信号符合“1101”这个模式时,match信号会被置为1。如果输入数据信号不符合模式,match信号会保持为0。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值