首页 > 其他分享 >【FPGA】 3-8译码器 —— 组合逻辑 | 熟悉语法及开发环境

【FPGA】 3-8译码器 —— 组合逻辑 | 熟悉语法及开发环境

时间:2023-10-31 12:33:42浏览次数:54  
标签:200 FPGA b0000 always reg 语法 decoder 译码器 out



文章目录

  • 1. 设计输入
  • 2. 分析综合
  • 3. 功能仿真
  • 4. 板爷调试


  • 继续熟悉基于vivado的FPGA开发流程。。
  • 学习一些新语法

【FPGA】 3-8译码器 —— 组合逻辑 | 熟悉语法及开发环境_fpga开发

3-8 译码器的应用我们接下来还会用到~

创建工程

观众老爷们别管了,咱板子也不一定一样~


【FPGA】 3-8译码器 —— 组合逻辑 | 熟悉语法及开发环境_十六进制_02

1. 设计输入

  • 编码
  • 画框图,vivado支持较弱
  • 使用IP,我们今天暂时不用哦~

添加Design Sources

decoder_3_8

module decoder_3_8(
    //端口列表
    a,
    b,
    c,
    out
);
    //端口定义
    input a;
    input b;
    input c;
    output[7:0] out; //位宽描述符 - 表示多位
    reg[7:0] out; //-以always块描述的信号赋值,被赋值的对象必须定义为reg类型
//    output reg[7:0] out;//或者写成这样也可
    //描述逻辑
    always@(*) begin
        case({a,b,c})
            3'b000: out = 8'b0000_0001; 
            3'b001: out = 8'b0000_0010;
            3'b010: out = 8'b0000_0100;
            3'b011: out = 8'b0000_1000;
            3'b100: out = 8'b0001_0000;
            3'b101: out = 8'b0010_0000;
            3'b110: out = 8'b0100_0000;
            3'b111: out = 8'b1000_0000;
        endcase  
    end        
//    always@(a,b,c)
endmodule

学习新语法,争做新青年 ——

  1. always块
always@(*)
    always@(a,b,c)
  1. case - endcase块
case({a, b, c})
  • {}位拼接,把三个独立信号看做一个三位信号
    我们还可 ——
wire[3:0] d;
assign d = {a, 1'b0, b, c}; //设置为常量的值
  • always块描述的信号赋值,被赋值的对象必须定义为reg类型,否则会爆红

【FPGA】 3-8译码器 —— 组合逻辑 | 熟悉语法及开发环境_译码器_03

当然也可以同时定义端口方向和端口类型。

  • 8'b0000_1010:描述多位宽信号的格式限定符,当然你可以写成3'd108'o128'ha还有 —— b二进制;d十进制;o八进制;h十六进制
    至于使用哪种方式,我们完全以便于理解为准。

2. 分析综合

Run synthesis 检查语法错误

3. 功能仿真

添加Simulation Sources文件

decoder_3_8_tb

`timescale 1ns/1ns //步长/精度

module decoder_3_8_tb(); //测试模块不需要端口

    //激励信号
    reg s_a;
    reg s_b;
    reg s_c;
    wire[7:0] out; 
    
    decoder_3_8 decoder_3_8( //贴标签
        //连线
        .a(s_a),
        .b(s_b),
        .c(s_c),
        .out(out)
    );
    
    //产生激励
    initial begin
        s_a = 0; s_b = 0; s_c = 0;
        #200;
        s_a = 0; s_b = 0; s_c = 1;
        #200;
        s_a = 0; s_b = 1; s_c = 0;
        #200;
        s_a = 0; s_b = 1; s_c = 1;
        #200;
        s_a = 1; s_b = 0; s_c = 0;
        #200;
        s_a = 1; s_b = 0; s_c = 1;
        #200;
        s_a = 1; s_b = 1; s_c = 0;
        #200;
        s_a = 1; s_b = 1; s_c = 1;
        #200;
        
    end
    
endmodule

run synthesis 再分析综合哦吼吼,它给我分析过了

Run Simulation ——


【FPGA】 3-8译码器 —— 组合逻辑 | 熟悉语法及开发环境_fpga开发_04

时序仿真跳过因为这个太简单了

4. 板爷调试

板子就是爷,因为它太贵了。。

分配IO引脚: SYSTHESIS → open Synthesized Design → IO Planning


【FPGA】 3-8译码器 —— 组合逻辑 | 熟悉语法及开发环境_十六进制_05

ctrl+s保存为XDC文件。

布局布线

IMPLEMENTATION → Run Implementation

或者你直接Generate Bitstream 那上一步自动帮你完成了,那我们以后都这么干。

连板子

Open Hardware Manager → open target → auto connect

Program device 就ok啦~


标签:200,FPGA,b0000,always,reg,语法,decoder,译码器,out
From: https://blog.51cto.com/u_15091587/8103671

相关文章

  • Markdown 常用的一些语法
    介绍Markdown是一种轻量级的标记语言,以.md结尾。Markdown是做笔记、为网站创建内容以及生成可打印文档的快速、简便的方法常用的Markdown文档工具:Atom/Vscodevim/SublimeText/Notepad++一些编程工具也可以写md文档,如PyCharm,IDEA常用语法斜体:斜体--快捷键ct......
  • configure.ac语法规则
    AC_CONFIG_FILES所有的Makefile.ac文件必须在AC_CONFIG_FILES中指定AC_CONFIG_FILES([ lib/Makefile lib/aaa/Makefile lib/bbb/Makefile lib/ccc/Makefile web/Makefile tools/Makefile tools/ddd/Makefile tools/eee/Makefile tools/fff/Makefile Makefile ])如......
  • Java基本语法
    一、基本框架1)概念一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作对象(object):代表现实世界中可以明确标识的一个实体,存在独特的标识、状态和行为。例如,一条鱼是一个对象,它的状态有:颜色、品种;行为有:漫游、鱼跃等。类(class):是创建对......
  • Markdown基础语法+部分扩语法(vscode)
    mdk语法目录mdk语法基础语法标题语法换行语法段落语法强调语法粗体(Bold)斜体(Italic)粗体和斜体引用语法我给你你出生多年前的列表语法有序列表无序列表在列表中嵌套其他元素代码语法行内代码代码块分割线语法链接语法网址和Email地址带格式话的链接引用类型链接图片语法普通图......
  • 11_编码器和译码器
    编码器和译码器编码器类型二进制编码器二~十进制编码器优先编码器二~十进制优先编码器优先编码器测试译码的概念与类型二进制译码器3线~8线译码器CT74LS138二~十进制译码器数码显示译码器数码显示译码器的结构和功能示意七段显示译码器......
  • Java基础语法
    一、注释:1、什么是注释:注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便于理解程序。2、注释有哪些:a:单行注释://   注释内容只可写一行  (快捷键:ctrl+/) b:多行注释:   /**/       /*  注释内容1             ......
  • ld链接脚本语法简介
    链接脚本由一系列语句组成,语句分两种,一种是命令语句,另外一种是赋值语句。链接脚本语法像C语言,主要有如下几点相似之处。语句之间使用分号";"作为分割符。原则上讲语句之间都要以";"作为分割符,但是对于命令语句来说也可以使用换行来结束该语句,对于赋值详吾句来说必须以";"......
  • szfpga 详细:高云1N1开发板高云gowin软件使用教程
     1.概述  国产FPGA是最近几年起来的产品,具有性价比高特点。高云FPGA,大多用在LED,电机控制,PLC设备上。 高云1N1开发板采用GW1N-LV1QN48C6/I5FPGA器件。具有低功耗,瞬时启动,高安全性,低成本,方便扩展等特点。价格便宜,易扩张,帮助用户快速进入国产FPGA学习。开发板集成多......
  • 自底向上的语法分析,闭包、GOTO函数
    自底向上的语法分析一、一个串ω归约(reduction)为文法开始符号的过程关键问题:1.何时进行规约,2.用哪个产生式规约句柄右边的串ω一定只包含终结符号。如果文法是无二义性的,那么文法的每个右句型都有且只有一个句柄二、LR(0)自动机Automaton项1.定义:产生式加上位于体中......
  • C++ 语法结构--堆
    1.堆介绍「堆heap」是一种满足特定条件的完全二叉树,主要可分为图8-1所示的两种类型。「大顶堆maxheap」:任意节点的值其子节点的值。「小顶堆minheap」:任意节点的值其子节点的值。堆作为完全二叉树的一个特例,具有以下特性。最底层节点靠左填充,其他层的节点都被填......