智能芯片与嵌入式复习

文章发布时间:

最后更新时间:

页面浏览: 加载中...

用状态机设计一个序列检测模块,检测一个二进制串行序列中是否含有“110”字段,每次出现“110”字段后,输出一个时钟周期的高电平检测标志信号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// 定义状态机的状态
localparam S0 = 2'b00; // 初始状态或未检测到有效序列
localparam S1 = 2'b01; // 检测到第一个 '1'
localparam S2 = 2'b10; // 检测到 '11'

module sequence_detector(
input wire clk,
input wire reset,
input wire data,
output reg detection_flag // 检测标志信号
);

reg [1:0] current_state;
reg [1:0] next_state;

// 状态寄存器
always @(posedge clk or posedge reset) begin
if (reset) begin
current_state <= S0;
end else begin
current_state <= next_state;
end
end

// 状态转移逻辑
always @(*) begin
case (current_state)
S0: begin
if (data == 1'b1) begin
next_state = S1;
end else begin
next_state = S0;
end
end
S1: begin
if (data == 1'b1) begin
next_state = S2;
end else begin
next_state = S0;
end
end
S2: begin
if (data == 1'b0) begin
next_state = S0;
end else begin
next_state = S2;
end
end
default: next_state = S0;
endcase
end

// 输出逻辑
always @(*) begin
if ((current_state == S2) && (data == 1'b0)) begin
detection_flag = 1'b1;
end else begin
detection_flag = 1'b0;
end
end

endmodule

基础概念与背景知识

人工智能芯片技术架构分类

技术架构 GPU FPGA ASIC 冯诺依曼架构
类脑芯片 神经形态架构

可编程逻辑器件

  1. 概念 可由二次开发者定制硬件架构和功能的芯片

  2. 分类
    a. 单次:ASIC
    b. 多次:CPLD FPGA
    游离式编程方式:ASIC

  3. aaa

  4. 芯片特点
    GPU:峰值性能高
    FPGA;平均性能高,知识产权安全性高

开发设计方法

测试平台基础知识

概念:一种用硬件描述语言设计的虚拟电路,用于在仿真环境下测试芯片模块的功能。
功能:产生待测芯片模块的全部输入

代码特点:

  1. 全封闭环境,不与外界交互数据
  2. 只能用于仿真,无法成为实际的电路

测试方法

timescale 语法
代码主体结构:定义输入输出测试信号、例化待测芯片模块、关联输入/输出信号。
例化格式:工程名、例化名、输入输出信号关联格式。
主要输入信号的产生方法:时钟显示/隐藏赋值、占空比精确控制、异步/同步触发复位、产生输入数据。
重要概念:

  1. 时钟和复位是测试平台的基础信号,必须正确产生。
  2. 时钟信号只能使用边沿触发,不能使用电平触发。
  3. 异步触发复位方式:触发可靠性高、复位可靠性低。
  4. 同步触发复位方式:触发可靠性低、复位可靠性高。
  5. 每一个二进制数据对应一个时钟周期。

仿真与综合知识

  1. 仿真:支持所有语法。(仿真语法)
  2. 综合:支持部分语法,是实际电路实现与工艺映射。(可综合语法)

掌握可综合设计方法

  1. 阻塞/非阻塞赋值:操作符“=”/“<=”。

  2. 阻塞/非阻塞赋值应用:组合逻辑电路用阻塞赋值,时序逻辑电路用非阻塞赋值。

  3. 组合电路赋值语法:assign语法、always语法。

  4. 时序电路赋值语法:always语法、6种格式。

  5. 时序逻辑电路采用阻塞/非阻塞赋值的区别:阻塞串行执行,非阻塞并行执行。

  6. 时序逻辑电路采用阻塞赋值的危害:赋值不受时钟沿直接控制,违法时序电路触发原则,导致;
    电路可靠性差。
    不利于实现高速设计。

  7. 信号初始化
    线网行数据(wire):不需要初始化;
    寄存器(reg):必须初始化,在复位时执行。

  8. 信号延时:

  9. 逻辑条件判断

  10. 循环结构展开:掌握for循环展开方法。
    例:

    1
    2
    3
    for (K = 0; k < MAX; k = k + 1) begin
    if(en) Abus = 2'b00;
    else Abus = 2'b01;

    展开为时序逻辑电路:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    always @(posedge clk or posedge rst) 
    begin
    if(rst)
    begin
    k <= 0;
    Abus <= 2'b00;
    end
    else if(en)
    begin
    k <= k + 1;
    Abus <= 2'b01;
    end
    else
    begin
    k <= k + 1;
    Abus <= 2'b00;
    end
    end
  11. 可综合设计目的:可靠性。

掌握可综合设计原则

敏感信号完备性原则:

工程型设计

  1. IP核
  2. 状态机
    Moore型状态机:输出只与当前状态有关,与输入无关。
    二段式状态机设计:代码结构正确、掌握设计流程(会对简单模块设计进行状态分解、状态编码、画状态转移图、编写第一段:状态转移控制的代码)。

期末考试四种题型:

  1. 填空题
  2. 简答题
  3. 代码分析题(补写/改写/注释/结论)
  4. 综合设计