FPGA project : inf_rcv

2023-11-01

module top (
    input       wire            sys_clk     ,
    input       wire            sys_rst_n   ,
    input       wire            inf_in      ,

    output      wire            led         ,
    output      wire            ds          ,
    output      wire            oe          ,
    output      wire            shcp        ,
    output      wire            stcp     
);


// 例化连线
    wire    [7:0]   data        ;
    wire            sign        ;
    wire    [19:00] data_w      ;
    assign          data_w = {12'd0,data} ;
    wire    [05:00] point_w     ;
    assign          point_w = 6'b000000 ;
    wire            sign_w      ;
    assign          sign_w = 1'b0 ;
    wire            seg_en_w    ;
    assign          seg_en_w = 1'b1 ;
inf_rcv inf_rcv_insert(
    .sys_clk                ( sys_clk   ) ,
    .sys_rst_n              ( sys_rst_n ) ,
    .inf_in                 ( inf_in    ) ,

    .data                   ( data      ) ,
    .sign                   ( sign      )        
);

led led_insert(
    .sys_clk                ( sys_clk   ) ,
    .sys_rst_n              ( sys_rst_n ) ,
    .key_in                 ( sign ) ,

    .led_out                ( led  )     
);

seg_595_dynamic seg_595_dynamic_insert(
    .sys_clk                ( sys_clk    ) ,
    .sys_rst_n              ( sys_rst_n  ) ,
    .data                   ( data_w     ) ,
    .point                  ( point_w    ) ,
    .sign                   ( sign_w     ) ,
    .seg_en                 ( seg_en_w   ) ,

    .ds                     ( ds         ) ,
    .oe                     ( oe         ) ,
    .shcp                   ( shcp       ) ,
    .stcp                   ( stcp       )    
);

endmodule
module inf_rcv (
    input       wire            sys_clk     ,
    input       wire            sys_rst_n   ,
    input       wire            inf_in      ,

    output      reg     [7:0]   data        ,
    output      reg             sign        
);
    // parameter degine
    parameter       T_9MS    = 19'd450_000 ,
                    T_4_5MS  = 18'd225_000 ,
                    T_2_225MS= 17'd112_500 ,
                    T_560US  = 15'd28_000  ,
                    T_1_69MS = 17'd84_500  ;

    // parameter degine
    localparam      IDLE     = 5'b0_0001 ,
                    TIME_9MS = 5'b0_0010 ,
                    ARBITE   = 5'b0_0100 ,
                    DATA     = 5'b0_1000 ,
                    REPEAT   = 5'b1_0000 ;

    // wire signal define 
    wire            nege        ;
    wire            pose        ;


    // reg signal define
    reg             inf_in_reg0 ;
    reg             inf_in_reg1 ;
    reg             inf_in_reg2 ;
    reg     [ 4:0]  state       ;
    reg     [19:0]  cnt         ; // 虽然最大计数9ms只需19位宽,但还是定义20位宽。
    reg             flag_9ms    ; // 由于设备制造精度与环境因素影响,这个标志信号在指定目标附近拉高即可。
    reg             flag_4_5ms  ;
    reg             flag_2_25ms ;
    reg             flag_560us  ;
    reg             flag_1_69ms ;
    reg     [ 5:0]  cnt_bit     ; // 32 bit 数据
    reg     [31:0]  data_reg    ;


    // // reg signal define
    // reg             inf_in_reg0 ;
    // reg             inf_in_reg1 ;
    // reg             inf_in_reg2 ;
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) begin
            inf_in_reg0 <= 1'b1 ;
            inf_in_reg1 <= 1'b1 ;
            inf_in_reg2 <= 1'b1 ;
        end else begin
            inf_in_reg0 <= inf_in      ;
            inf_in_reg1 <= inf_in_reg0 ;
            inf_in_reg2 <= inf_in_reg1 ;
        end
    end
    // // wire signal define 
    // wire            nege        ;
    // wire            pose        ;
    assign  nege = ~inf_in_reg1 &&  inf_in_reg2 ;
    assign  pose =  inf_in_reg1 && ~inf_in_reg2 ;
    // reg     [ 4:0]  state       ;
    always @(posedge sys_clk or negedge sys_rst_n)
        if(~sys_rst_n) 
            state <= IDLE ;
        else case (state)
        IDLE    :if (nege == 1'b1) 
                    state <= TIME_9MS ;
                 else 
                    state <= IDLE ;
        TIME_9MS:if(pose == 1'b1 && flag_9ms == 1'b1) //T_9MS - 19'd100
                    state <= ARBITE ;
                 else if(pose == 1'b1 && flag_9ms == 1'b0)
                    state <= IDLE ;
                 else 
                    state <= TIME_9MS ;
        ARBITE  :if(nege == 1'b1 && flag_4_5ms == 1'b1) // 说明是引导码
                    state <= DATA ;
                 else if(nege == 1'b1 && flag_2_25ms == 1'b1) // 说明是重复码
                    state <= REPEAT ;
                 else if(nege == 1'b1 && flag_4_5ms == 1'b0 && flag_2_25ms == 1'b0)
                    state <= IDLE ;
                 else 
                    state <= ARBITE ;
        DATA    :if((pose == 1'b1 && flag_560us == 1'b1 && cnt_bit == 6'd32) 
                    || (pose == 1'b1 && flag_560us == 1'b0) 
                    || (nege == 1'b1 && ( flag_560us == 1'b0 && flag_1_69ms == 1'b0)))
                    state <= IDLE ;
                 else
                    state <= DATA ;
        REPEAT  :if(pose == 1'b1 )
                    state <= IDLE ;
                 else
                    state <= REPEAT ;
        default : state <= IDLE ;
        endcase
    // reg     [19:0]  cnt         ; // 虽然最大计数9ms只需19位宽,但还是定义20位宽。
    // reg             flag_9ms    ; // 由于设备制造精度与环境因素影响,这个标志信号在指定目标附近拉高即可。
    // reg             flag_4_5ms  ;
    // reg             flag_2_25ms ;
    // reg             flag_560us  ;
    // reg             flag_1_69ms ;
    // reg     [ 5:0]  cnt_bit     ; // 32 bit 数据
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) begin
            cnt         <= 20'd0 ;
            flag_9ms    <= 1'b0  ;
            flag_4_5ms  <= 1'b0  ;
            flag_2_25ms <= 1'b0  ;
            flag_560us  <= 1'b0  ;
            flag_1_69ms <= 1'b0  ;
            cnt_bit     <= 6'd0  ;
        end else begin
            case (state)
            IDLE    :begin
                        cnt         <= 20'd0 ;
                        flag_9ms    <= 1'b0  ;
                        flag_4_5ms  <= 1'b0  ;
                        flag_2_25ms <= 1'b0  ;
                        flag_560us  <= 1'b0  ;
                        flag_1_69ms <= 1'b0  ;
                        cnt_bit     <= 6'd0  ;
                     end
            TIME_9MS:begin
                        if(pose == 1'b1) begin
                            cnt <= 20'd0 ;
                        end else begin
                            cnt <= cnt + 1'b1 ;
                        end

                        if(cnt >= T_9MS - 19'd8000 && cnt <= T_9MS + 19'd8000) // 9ms附近拉高。不能太“离谱”。
                            flag_9ms <= 1'b1 ;
                        else 
                            flag_9ms <= 1'b0 ;

                        flag_4_5ms  <= 1'b0  ;
                        flag_2_25ms <= 1'b0  ;
                        flag_560us  <= 1'b0  ;
                        flag_1_69ms <= 1'b0  ;
                        cnt_bit     <= 6'd0  ;
                     end
            ARBITE  :begin
                        if(nege == 1'b1)
                            cnt <= 20'd0 ;
                        else 
                            cnt <= cnt + 1'b1 ;
                        
                        if(cnt >= T_4_5MS - 18'd8000 && cnt <= T_4_5MS + 18'd8000)
                            flag_4_5ms <= 1'b1 ;
                        else 
                            flag_4_5ms <= 1'b0 ;

                        if(cnt >= T_2_225MS - 17'd8000 && cnt <= T_2_225MS + 17'd8000)
                            flag_2_25ms <= 1'b1 ;
                        else 
                            flag_2_25ms <= 1'b0 ;

                        flag_9ms    <= 1'b0  ;
                        flag_560us  <= 1'b0  ;
                        flag_1_69ms <= 1'b0  ;
                        cnt_bit     <= 6'd0  ;
                        end
            DATA    :begin
                        if(nege == 1'b1 || pose == 1'b1)
                            cnt <= 20'd0 ;
                        else 
                            cnt <= cnt + 1'b1 ;
                        
                        if(cnt >= T_560US - 15'd8000 && cnt <= T_560US + 15'd8000)
                            flag_560us <= 1'b1 ;
                        else 
                            flag_560us <= 1'b0 ;
                        
                        if(cnt >= T_1_69MS - 15'd8000 && cnt <= T_1_69MS + 15'd8000)
                            flag_1_69ms <= 1'b1 ;
                        else 
                            flag_1_69ms <= 1'b0 ;

                        flag_9ms    <= 1'b0  ;
                        flag_4_5ms  <= 1'b0  ;
                        flag_2_25ms <= 1'b0  ;

                        if(pose == 1'b1 && flag_560us == 1'b1 && cnt_bit == 6'd32)
                            cnt_bit <= 'd0 ;
                        else if(nege == 1'b1)
                            cnt_bit     <= cnt_bit + 1'b1 ;
                        else 
                            cnt_bit     <= cnt_bit ;
                     end
            REPEAT  :begin
                        cnt         <= 20'd0 ;
                        flag_9ms    <= 1'b0  ;
                        flag_4_5ms  <= 1'b0  ;
                        flag_2_25ms <= 1'b0  ;
                        flag_560us  <= 1'b0  ;
                        flag_1_69ms <= 1'b0  ;
                        cnt_bit     <= 6'd0  ;
                        end
            default:begin
                        cnt         <= 20'd0 ;
                        flag_9ms    <= 1'b0  ;
                        flag_4_5ms  <= 1'b0  ;
                        flag_2_25ms <= 1'b0  ;
                        flag_560us  <= 1'b0  ;
                        flag_1_69ms <= 1'b0  ;
                        cnt_bit     <= 6'd0  ;
                    end
            endcase
        end
    end

    // reg [31:0]       data_reg    ;
    always @(posedge sys_clk or negedge sys_rst_n)
        if(~sys_rst_n)
            data_reg <= 31'd0 ;
        else if(state == DATA && nege == 1'b1 && cnt_bit <= 6'd31 && flag_1_69ms == 1'b1)
            data_reg[cnt_bit] <= 1'b1 ;
        else if(state == DATA && nege == 1'b1 && cnt_bit <= 6'd31 && flag_560us == 1'b1)
            data_reg[cnt_bit] <= 1'b0 ;
        else 
            data_reg <= data_reg ;

    // output signal 
    // reg     [7:0]   data        ,
    always @(posedge sys_clk or negedge sys_rst_n)
        if(~sys_rst_n)
            data <= 8'd0 ;
        else if((data_reg[23:16] == ~data_reg[31:24]) && (data_reg[7:0] == ~data_reg[15:8]))
            data <= data_reg[23:16] ;
        else 
            data <= data ;
    // reg             sign   
    always @(posedge sys_clk or negedge sys_rst_n)
        if(~sys_rst_n) 
            sign <= 1'b0 ;
        else if(state == REPEAT)
            sign <= 1'b1 ; 
        else 
            sign <= 1'b0 ;
endmodule
module led(
    input           sys_clk ,
    input           sys_rst_n ,
    input           key_in      ,

    output    wire   led_out     
);
    reg   key_in_reg1 ;
    reg   key_in_reg2 ;
    wire  pose        ;
    reg   [24:0]    cnt_500ms   ; // 24_999_999
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) begin
            key_in_reg1 <= 1'b0 ;
            key_in_reg2 <= 1'b0 ;
        end else begin
            key_in_reg1 <= key_in ;
            key_in_reg2 <= key_in_reg1 ;
        end
    end
    assign pose = ~key_in_reg2 && key_in_reg1 ;
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) begin
            cnt_500ms <= 25'd0 ;
        end else begin
            if(cnt_500ms == 25'd0 && pose == 1'b1) begin
                cnt_500ms <= 25'd24_999_999 ;
            end else begin
                if(cnt_500ms == 25'd0) begin
                    cnt_500ms <= cnt_500ms ;
                end else begin
                    cnt_500ms <= cnt_500ms - 1'b1 ;
                end
            end
        end
    end
    assign led_out = (cnt_500ms == 0) ? 1'b1 : 1'b0 ;  // 低电平亮。
    
endmodule

 

`timescale 1ns/1ns
module test_inf_rcv();
    reg             sys_clk     ;
    reg             sys_rst_n   ;
    reg             inf_in      ;

    wire    [7:0]   data        ;
    wire            sign        ;

// Instantiation
inf_rcv inf_rcv_insert(
    .sys_clk        ( sys_clk    ) ,
    .sys_rst_n      ( sys_rst_n  ) ,
    .inf_in         ( inf_in     ) ,

    .data           ( data       ) ,
    .sign           ( sign       )        
);
    parameter CYCLE = 20 ;
    initial begin
        sys_clk    = 1'b1 ;
        sys_rst_n <= 1'b0 ;
        inf_in    <= 1'b1 ;
        #( CYCLE * 10 )   ;
        sys_rst_n <= 1'b1 ;
        #( CYCLE * 500  ) ;

// 引导码
        inf_in <= 1'b0 ;
        #(9_000_000)   ;
        inf_in <= 1'b1 ;
        #(4_500_000)   ;
// 地址码 8'h57 0101_0111 1110_1010
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
// 地址反码 8'hA8 1010_1000 0001_0101
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
// 数据码 8'h22 0010_0010 0100_0100
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
// 数据反码 8'hDD 1101_1101 1011_1011
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 0
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(560_000)     ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
        inf_in <= 1'b0 ; // 1
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1690_000)    ;
// 结束码 
        inf_in <= 1'b0 ;
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1_000_000)   ;
// 重复码 
        inf_in <= 1'b0 ;
        #(9_000_000)   ;
        inf_in <= 1'b1 ;
        #(2_250_000)   ;
// 结束码 
        inf_in <= 1'b0 ;
        #(560_000)     ;
        inf_in <= 1'b1 ;
        #(1_000_000)   ;
        $stop             ;
    end
    always #( CYCLE / 2 ) sys_clk = ~sys_clk ;


endmodule

 

 

其他模块是之前的。

已上板验证成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPGA project : inf_rcv 的相关文章

  • FPGA设计篇之流水线思想

    FPGA设计篇之流水线思想 一 写在前面 二 正文开始 2 1举个栗子 2 2 1情况一 组合逻辑 2 1 2情况二 流水线设计 2 1 4 小总结 2 2举第二个栗子 写在最后 一 写在前面 流水线 大家好 我是富土康三号流水线的张全蛋
  • PRBS笔记

    1 概述 PRBS 伪随机二进制序列 也称为伪随机码 通常被用来测试高速信号的信号质量 伪随机 也说明了该码流并不是真正的随机 而是具有特性属性 码流由 多项式 决定 具有重复周期 PRBS具有多种阶数 如PRBS7 PRBS15 PRBS
  • 各种FIFO硬件设计(FIFO概念、异步、同步、非2次幂深度FIFO)

    文章目录 一 FIFO概述 二 FIFO分类 三 FIFO重要信号与参数 3 1 信号 3 2 参数 3 2 1 data depth的确定 四 FIFO存储原理 五 同步FIFO 5 1 空满信号判断 5 2 同步FIFO源码 5 3 测
  • 数字IC手撕代码-兆易创新笔试真题

    前言 本专栏旨在记录高频笔面试手撕代码题 以备数字前端秋招 本专栏所有文章提供原理分析 代码及波形 所有代码均经过本人验证 目录如下 1 数字IC手撕代码 分频器 任意偶数分频 2 数字IC手撕代码 分频器 任意奇数分频 3 数字IC手撕代
  • modelsim 关联 notepad++

    modelsim 控制窗口敲入 1 proc external editor filename linenumber exec I notepad notepad exe filename 2 set PrefSource altEdito
  • Verilog HDL——分频 计数

    分频 计数 module traffic Clk 50M Rst Clk30 Clk 1Hz input Clk 50M Rst output Clk30 Clk 1Hz 分频器 reg Clk 1Hz 分频器 50M分频 reg 31 0
  • DEBUG:Generate Bitstream失败

    问题 约束失败 解决 确保IO初始化引脚正确 和选择合适的电平
  • 关于Keil中Memory中观察不到数据变化的问题以及启动文件栈的初始化

    关于Keil中Memory中观察不到数据变化的问题 在KEIL中观察Memory数据变化 一定要记得只能在RAM地址或ROM之内观察 如下图所示 RAM的地址设置在地址为0x20000000开始的地方 大小为0x20000 因此只有在这个范
  • 跨时钟域处理方法(一)——打拍

    一 说明 处理跨时钟域的数据可以分为单bit数据和多bit数据 而打拍的方法主要常见于处理单bit数据的跨时钟域问题 打拍的本质是通过添加寄存器 对输入的数据进行延拍 其主要目标是消除亚稳态的影响 常见的是打2拍 也就是添加2级寄存器 二
  • FPGA project : water_led

    module water led parameter MAX CNT 25 d25 000 000 input wire sys clk input wire sys rst n output wire 03 00 led signal r
  • 实验1-FPGA编程入门

    文章目录 一 认识全加器 二 输入原理图实现1位加法器 一 半加器原理图输入 二 全加器原理图输入 三 Verilog语言实现全加器 四 总结 五 资料参考 一 认识全加器 一 半加器 1 逻辑分析 如下图所示 半加器只有两个输入和两个输出
  • 关于xilinx BRAM IP的延迟以及流程

    关于RAM IP的延迟 1 选择了output registers 可以在RAM输出端口添加register 也可以在core的输出添加 在primitives添加 降低clock to out到primitive的延迟 在core添加re
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • BUCK电路分析(二)

    BUCK电路分析 二 PSIM仿真同步BUCK电路 在上片文章中 初步的分析了BUCK电路的工作原理 本章使用PSIM软件仿真BUCK电路 观察分析BUCK电路器件关键波形 图1是同步BUCK电路图 开关频率设置为200K 固定占空比 在仿
  • FPG—VGA显示器字符显示(附代码)

    目录 1 实操 1 1 字符取模 1 2 顶层模块 1 3 图像数据生成模块 1 3 1 模块框图 1 3 2 波形图绘制 1 3 3 代码编写 1 3 4 仿真验证 2 总结 本例程大部分与VGA显示驱动内容相同 只是显示部分改变了 故此
  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • 【FPGA多周期时序约束详解】- 解读FPGA多周期时序约束的全过程

    FPGA多周期时序约束详解 解读FPGA多周期时序约束的全过程 FPGA作为数字电路设计的常见工具 其设计中必然会遇到时序约束的问题 而多周期时序约束更是FPGA设计中不可避免的难点之一 本文将详细介绍FPGA多周期时序约束的全过程 并结合
  • 硬核 | 从零制作一个激光雷达需要多久?

    编辑 ADS智库 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 硬件交流 技术交流群 本文只做学术分享 如有侵权 联系删文 激光雷达 LiDAR 是激光探测及测距系统的简称 目前广泛应用在无
  • 时序约束理解

    异步配置信息 跨时钟域 配置信息一般set max delay按照3delay来约束 2 异步回读 rst clear信号 设置set false path 放松时序约束要求 不应分析设计中的逻辑路径 因为不关心点到点时序要求
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s

随机推荐

  • 目标检测——YOLOv3、YOLOv4、YOLOv5、YOLOv7正负样本匹配、YOLO3损失函数理解

    系列文章目录 目标检测 map概念 IoU汇总IoU GIoU DIoU CIoU SIoU EIoU Wiou Focal alpha 目标检测 YOLOv3 YOLOv4 YOLOv5 YOLOv7正负样本匹配 YOLO3损失函数理解
  • linux redhat 离线安装 mysql 8.0.20

    官方文档 https dev mysql com doc refman 8 0 en linux installation rpm html 以下操作都是用 root 用户操作 另配置文件是使用mysqld initialize 生成的 e
  • kafka消费主题和消费组总结

    1 查询kafka主题列表的命令 切换到kafka的安装目录bin目录下 执行如下代码 kafka topics sh list zookeeper zookeeprerIp zookeeperPort 比如 kafka topics sh
  • WSL 的安装、报错解决、使用技巧

    需要Windows10或以上系统版本 如果你的操作系统是Windows 10 版本 2004 及更高版本 内部版本 19041 及更高版本 或 Windows 11 并且你从来没有安装过WSL 你可以使用命令行简单的安装安装 WSL 使用管
  • linux Oops和Panic关系

    常在河边走 哪能不湿鞋 用Linux 总有死机的时候 如果运气好 会看到一些所谓 Oops 信息 在屏幕上或系统日志中 比如 Unable to handle kernel paging request at virtual address
  • 印象笔记、为知笔记、有道云笔记使用比较

    特点比较 印象笔记 为知笔记 有道云笔记 Bear Typora 特点比较 功能 印象笔记 为知笔记 有道笔记 费用 免费 有会员 60 元 年 免费 有会员 手机 PC 云同步 微信保存 网页剪藏 笔记内容加密 共享笔记本 快捷键 批量导
  • 完整LUT解释说明

    什么是LUT 我们业内在LUT的应用方面有着许多混乱的认识 很多人会把LUT看成是一种 黑魔法 然而实际上它们是再正常不过的东西 因此为了帮助大家了解LUT的定义和工作原理 本文将会尽可能详细地为大家讲述LUT以及它的应用 包括用于校准的技
  • 简介JSONObject的各种用法

    1 java对象转化成String String s JSONObject toJSONString javaObject class 2 java对象转化成Object Object str JSONObject toJSON javaO
  • SW-3配置文件

    CS6200 28X EI config hos SW 3 SW 3 config vlan 10 SW 3 config vlan10 name FB YX SW 3 config vlan10 vlan 20 SW 3 config v
  • 树莓派Raspbian Buster/Debian 10 安装ROS

    目录 一些补充 安装ROS 初始化rosdep 测试 平台 树莓派4B 系统版本 2020 05 27 raspios buster arm64 img 一些补充 系统安装参考 树莓派学习笔记 一 烧录系统 无屏幕 配置Wifi和SSH服务
  • QT 元对象解析 及和其他语言区别

    说Qt信号与槽是一个很好机制 不如说Qt的元对象系统很强大 这也是大家讲Qt就必须将信号与槽 讲信号与槽就要讲Qt的元对象系统 当然初学者知道怎么用就OK啦 当然随着你写的代码越多 接触的平台越多的时候 你就会好奇Qt是如何把两个 多个 任
  • Java程序——检索文件(含内容)

    项目说明 给定一个指定目录和关键字 扫描其中的文件名和文件内容 找到包含关键字的文件 完整代码 import java io File import java io FileInputStream import java io IOExce
  • 利用find命令进行批量操作

    前些天 我要把Linux上的几千个txt文档进行转码 需要用到iconv命令 可是我总不能 一个一个的去敲 文档转码命令 iconv f GBK t UTF 8 file1 o file2 将file1从GBK转为UTF 8 并输出为fil
  • Wireshark抓包体验

    1 嗅探器原理 嗅探技术是网络安全攻防技术中很重要的一种 通过它可以获取网络中的大量信息 与主动扫描相比 嗅探更难以被察觉 能够对网络中的活动进行实时监控 网络嗅探器实际上就是网络中的窃听器 其用途就是捕获分析网络中的数据包 帮助网络管理员
  • CMake方式配置PCL+VS开发环境

    PCL VS安装配置其他方式看下面博客 本文链接 win10 vs2019 pcl1 11 0安装教程 a zhua66的博客 CSDN博客 win10 安装pcl 考虑到配置属性表 xxx props 非常麻烦繁琐 换设备又得重新选择PC
  • 电源设计问题

    目录 一 电源器件 1 法拉电容 二 充电规则 1 充电限制 2 充电时间计算 三 有线充电 四 无线充电 一 电源器件 1 法拉电容 超级电容具有功率密度高 充放电时间短 循环寿命长 工作温度范围宽等显著的优点 适合应用在大功率能量流动的
  • 南京大学《软件分析》笔记01 - 静态分析的基本概念

    Rice s Theorem Any non trivial property of the behavior of programs in a r e language is undecidable r e recursively enu
  • 顺序表初始化

    文章目录 1 顺序表 2 顺序表的初始化 1 顺序表 顺序表 顺序存储结构 存储数据时 会提前申请一整块足够大小的物理空间 然后将数据依次存储到一整块连续的存储空间内 存储时做到数据元素之间不留一丝缝隙 使用顺序表存储集合 1 2 3 4
  • Cheat Engine 教程( 1 - 9 通关 )

    工具包 https down 52pojie cn Tools Debuggers Cheat Engine 官网 https www cheatengine org Cheat Engine v7 5 汉化 https pan aoe t
  • FPGA project : inf_rcv

    module top input wire sys clk input wire sys rst n input wire inf in output wire led output wire ds output wire oe outpu