国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器

這篇具有很好參考價值的文章主要介紹了基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

?一、功能定義

二、設計輸入?

1、主模塊

2、DDS模塊

3、 按鍵消抖模塊

三、功能仿真?

四、綜合優(yōu)化

五、布局布線

六、時序仿真

七、板級調試?

代碼規(guī)范:Verilog 代碼規(guī)范_verilog代碼編寫規(guī)范-CSDN博客

開發(fā)流程:FPGA基礎知識----第二章 FPGA 開發(fā)流程_fpga 一個項目的整個流程-CSDN博客?

源碼下載:GitHub - Redamancy785/FPGA-Learning-Record: 項目博客:https://blog.csdn.net/weixin_51460407

?一、功能定義

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

二、設計輸入?

1、主模塊

這段代碼是一個Verilog模塊,名為dds_ad9767,它實現(xiàn)了一個雙通道的直接數(shù)字頻率合成器(DDS)系統(tǒng)。DDS是一種用于生成模擬波形(如正弦波、方波等)的電子技術,廣泛應用于信號發(fā)生器、通信系統(tǒng)等領域。這個模塊特別為與AD9767這類數(shù)字信號處理器(DSP)芯片協(xié)同工作而設計。

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

/*
    Tips:
    1、可分別于A、B通道同時輸出兩路波形 
    2、每次按下 f_switch_button_a_i , 通道A輸出頻率在預設的四種情況切換;通道B同理。
    3、每次按下 p_switch_button_a_i , 通道A輸出相位在預設的兩種情況切換;通道B同理。
*/
module dds_ad9767(
    reset_n_i,
    clk_i,
    mode_switch_button_a_i,
    f_switch_button_a_i,
    p_switch_button_a_i,
    mode_switch_button_b_i,
    f_switch_button_b_i,
    p_switch_button_b_i,
    data_a_o,
    data_b_o
    );
    
    input  reset_n_i,clk_i;
    input [1:0]mode_switch_button_a_i,mode_switch_button_b_i;
    input f_switch_button_a_i,p_switch_button_a_i,f_switch_button_b_i,p_switch_button_b_i;
    output  [13:0] data_a_o;
    output  [13:0] data_b_o;
    
    // A通道dds例化
    reg [31:0] u_f_word_a;
    reg [11:0] u_p_word_a;

    dds U_dds_a( 
        .reset_n_i(reset_n_i),
        .clk_i(clk_i),
        .f_word_i(u_f_word_a),
        .p_word_i(u_p_word_a),
        .mode_i(mode_switch_button_a_i),
        .data_o(data_a_o)
    );
    
    //  A通道頻率切換
    wire f_switch_button_a_press_key_flag;    
    key_filter U_f_switch_button_a_i(
        .clk_i(clk_i),
        .reset_n_i(reset_n_i),
        .key_i(f_switch_button_a_i),
        .press_key_flag_o(f_switch_button_a_press_key_flag)
    );
    
    reg [1:0] f_switch_cnt_a;
    
    always@(posedge clk_i or negedge reset_n_i)
    if(!reset_n_i)
        f_switch_cnt_a <= 0;
    else if(f_switch_button_a_press_key_flag == 1)
        f_switch_cnt_a <= f_switch_cnt_a + 1;
    
    always@(*)
    case(f_switch_cnt_a)
        0 : u_f_word_a <= 65536;
        1 : u_f_word_a <= 65536*2;
        2 : u_f_word_a <= 65536*3;
        3 : u_f_word_a <= 65536*4;
    endcase

    //  A通道相位切換
    wire p_switch_button_a_press_key_flag;    
    key_filter U_p_switch_button_a_i(
        .clk_i(clk_i),
        .reset_n_i(reset_n_i),
        .key_i(p_switch_button_a_i),
        .press_key_flag_o(p_switch_button_a_press_key_flag)
    );
    
    reg  p_switch_cnt_a;
    
    always@(posedge clk_i or negedge reset_n_i)
    if(!reset_n_i)
        p_switch_cnt_a <= 0;
    else if(p_switch_button_a_press_key_flag == 1)
        p_switch_cnt_a <= p_switch_cnt_a + 1;
    always@(*)
    case(p_switch_cnt_a)
        0 : u_p_word_a <= 0;
        1 : u_p_word_a <= 1024;
    endcase
    
    // B通道dds例化
    reg [31:0] u_f_word_b; 
    reg [11:0] u_p_word_b;
    dds U_dds_b( 
        .reset_n_i(reset_n_i),
        .clk_i(clk_i),
        .f_word_i(u_f_word_b),
        .p_word_i(u_p_word_b),
        .mode_i(mode_switch_button_b_i),
        .data_o(data_b_o)
    );
    
    //  B通道頻率切換
    wire f_switch_button_b_press_key_flag;    
    key_filter U_f_switch_button_b_i(
        .clk_i(clk_i),
        .reset_n_i(reset_n_i),
        .key_i(f_switch_button_b_i),
        .press_key_flag_o(f_switch_button_b_press_key_flag)
    );
    
    reg [1:0] f_switch_cnt_b;
    
    always@(posedge clk_i or negedge reset_n_i)
    if(!reset_n_i)
        f_switch_cnt_b <= 0;
    else if(f_switch_button_b_press_key_flag == 1)
        f_switch_cnt_b <= f_switch_cnt_b + 1;
    always@(*)
    case(f_switch_cnt_b)
        0 : u_f_word_b <= 65536;
        1 : u_f_word_b <= 65536*2;
        2 : u_f_word_b <= 65536*3;
        3 : u_f_word_b <= 65536*4;
    endcase

    //  B通道相位切換
    wire p_switch_button_b_press_key_flag;    
    key_filter U_p_switch_button_b_i(
        .clk_i(clk_i),
        .reset_n_i(reset_n_i),
        .key_i(p_switch_button_b_i),
        .press_key_flag_o(p_switch_button_b_press_key_flag)
    );
    
    reg  p_switch_cnt_b;
    
    always@(posedge clk_i or negedge reset_n_i)
    if(!reset_n_i)
        p_switch_cnt_b <= 0;
    else if(p_switch_button_b_press_key_flag == 1)
        p_switch_cnt_b <= p_switch_cnt_b + 1;
    always@(*)
    case(p_switch_cnt_b)
        0 : u_p_word_b <= 0;
        1 : u_p_word_b <= 1024;
    endcase
    
endmodule

?2、DDS模塊

1、IP設置

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

?基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

?基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

?2、初始文件生成設置

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

3、代碼部分

這段代碼是一個Verilog模塊,名為dds,它實現(xiàn)了一個直接數(shù)字頻率合成器(DDS)的功能。DDS是一種電子系統(tǒng),能夠通過數(shù)字技術生成模擬波形,如正弦波、方波和三角波等。這個模塊通過接收頻率字(f_word_i)和相位字(p_word_i)輸入,以及模式選擇信號(mode_i),來輸出相應的波形數(shù)據(jù)。

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

/*
    Tips:
    1、修改 mode_i 可以切換三種不同的輸出波形 
    2、f_word_i 頻率字輸入,當?shù)扔诘湫椭?^16=65536時,dds輸出的波形頻率在738Hz左右
    3、p_word_i 相位字輸入,當?shù)扔诘湫椭?024時,dds輸出的波形起始相位為90°
*/
module dds( 
    reset_n_i,
    clk_i,
    f_word_i,
    p_word_i,
    mode_i,
    data_o
    );
    
    input [1:0] mode_i;
    input reset_n_i,clk_i;
    input [31:0]f_word_i; 
    input [11:0]p_word_i;
    output reg [13:0] data_o;
    
    // 頻率字輸入寄存器 r_f_word_i
    reg [31:0] r_f_word_i; 
    always@(posedge clk_i)
        r_f_word_i <= f_word_i;
        
    // 相位字輸入寄存器 r_f_word_i
    reg [11:0] r_p_word_i; 
    always@(posedge clk_i)
        r_p_word_i <= p_word_i;
         
    // 相位累加器 phase_accumulator
    reg [31:0] phase_accumulator;
    always@(posedge clk_i or negedge reset_n_i)
        if(!reset_n_i)
            phase_accumulator <= 0;
        else
            phase_accumulator <= phase_accumulator + r_f_word_i;
            
    // 波形數(shù)據(jù)表地址 rom_addr
    reg [11:0] rom_addr;
    always@(posedge clk_i or negedge reset_n_i)
        if(!reset_n_i)
            rom_addr <= 0;
        else
            rom_addr <= r_p_word_i + phase_accumulator[31:20];
    // sine波形         
    wire [13:0] sine_data_o;
    sine_rom U_sine_rom (
        .clka(clk_i),    // input wire clka
        .addra(rom_addr),  // input wire [11 : 0] addra
        .douta(sine_data_o)  // output wire [13 : 0] douta
    );
    
    // square波形
    wire [13:0] square_data_o;
    square_rom U_square_rom (
        .clka(clk_i),    // input wire clka
        .addra(rom_addr),  // input wire [11 : 0] addra
        .douta(square_data_o)  // output wire [13 : 0] douta
    );

    // triangular波形
    wire [13:0] triangular_data_o;
    triangular_rom U_triangular_rom (
        .clka(clk_i),    // input wire clka
        .addra(rom_addr),  // input wire [11 : 0] addra
        .douta(triangular_data_o)  // output wire [13 : 0] douta
    );  
    
    // 模式選擇
    always@(*)
        case(mode_i)
            0 : data_o = sine_data_o;
            1 : data_o = square_data_o;
            2 : data_o = triangular_data_o;
            3 : data_o = 8192;
        endcase 
    
     
endmodule

3、 按鍵消抖模塊

這段代碼是一個Verilog模塊,名為key_filter,它實現(xiàn)了一個按鍵濾波器的功能。該模塊用于檢測按鍵的按下和釋放,并確保按鍵動作至少持續(xù)20毫秒。模塊提供了按鍵按下和釋放的輸出標志,以及當前按鍵的狀態(tài)。

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

/*
    Tips:
    1、檢測到按鍵按下,會產生一個周期的 press_key_flag_o 提示信號
    2、按鍵按下時間需要持續(xù)20ms
*/
module key_filter(
    clk_i,
    reset_n_i,
    key_i,
    press_key_flag_o,
    release_key_flag_o,
    key_state_o
    );
    
    input clk_i,reset_n_i,key_i; 
    output press_key_flag_o,release_key_flag_o,key_state_o;
    
    reg press_key_flag_o,release_key_flag_o;
    reg [1:0] state; 
    wire time_20ms_reached;
    reg key_state_o;
    localparam IDLE = 0;
    localparam PRESS_FILTER = 1;
    localparam WAIT = 2;
    localparam RELEASE_FILTER = 3;
    
    // 輸入 key_i 同步處理 消除亞穩(wěn)態(tài)
    reg r_key_i,sync_d_0_key_i,sync_d_1_key_i; 
    wire nedge_key,pedge_key;
    always@(posedge clk_i)
        sync_d_0_key_i <= key_i;
    always@(posedge clk_i)
        sync_d_1_key_i <= sync_d_0_key_i;
    always@(posedge clk_i)
        r_key_i <= sync_d_1_key_i;
   
    assign nedge_key = r_key_i & (~sync_d_1_key_i); 
    assign pedge_key = ~r_key_i & sync_d_1_key_i;

    // 狀態(tài)機 
    always@(posedge clk_i or negedge reset_n_i)
    if(!reset_n_i) begin
        release_key_flag_o <= 0;
        press_key_flag_o <= 0;
        state <= IDLE;
        key_state_o <= 1;
    end
    else begin 
        case(state)
            IDLE :
                begin
                    release_key_flag_o <= 0;
                    if(nedge_key)
                        state <= PRESS_FILTER;
                    else 
                        state <= IDLE;
                end
                
            PRESS_FILTER :
                if(time_20ms_reached) begin
                    state <= WAIT;
                    press_key_flag_o <= 1;
                    key_state_o <= 0;
                end
                else if(pedge_key)
                    state <= IDLE;
                else 
                    state <= PRESS_FILTER;
                    
            WAIT :
                begin
                    press_key_flag_o <= 0;
                    if(pedge_key)
                        state <= RELEASE_FILTER;
                    else
                        state <= WAIT;
                end
                
            RELEASE_FILTER :
                if(time_20ms_reached) begin
                    state <= IDLE;
                    release_key_flag_o <= 1;
                    key_state_o <= 1;
                end
                else if(nedge_key)
                    state <= WAIT;
                else 
                    state <= RELEASE_FILTER;    
        endcase
    end
    
    // time_20ms_reached 
    parameter MCNT = 1000_000;
    reg [29:0] counter;
    always@(posedge clk_i or negedge reset_n_i)
        if(!reset_n_i)
            counter <= 0;
        else if(state == RELEASE_FILTER || state == PRESS_FILTER) 
            counter <= counter + 1;
        else
            counter <= 0;
    
    assign time_20ms_reached = ( counter >= (MCNT - 1) );    
 
endmodule

三、功能仿真?

這段代碼是一個Verilog測試平臺(testbench),名為dds_ad9767_tb,用于模擬和測試dds_ad9767模塊的行為。測試平臺沒有物理硬件,它通過模擬輸入信號來驗證dds_ad9767模塊的功能是否符合預期。

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)

?

`timescale 1ns / 1ps

module dds_ad9767_tb();
    reg  u_reset_n_i,u_clk_i;
    reg [1:0] u_mode_switch_button_a_i,u_mode_switch_button_b_i;
    reg u_f_switch_button_a_i,u_p_switch_button_a_i,u_f_switch_button_b_i,u_p_switch_button_b_i;
    wire [13:0] u_data_a_o;
    wire [13:0] u_data_b_o;
    
    dds_ad9767 U_dds_ad9767(
        .reset_n_i(u_reset_n_i),
        .clk_i(u_clk_i),
        .mode_switch_button_a_i(u_mode_switch_button_a_i),
        .f_switch_button_a_i(u_f_switch_button_a_i),
        .p_switch_button_a_i(u_p_switch_button_a_i),
        .mode_switch_button_b_i(u_mode_switch_button_b_i),
        .f_switch_button_b_i(u_f_switch_button_b_i),
        .p_switch_button_b_i(u_p_switch_button_b_i),
        .data_a_o(u_data_a_o),
        .data_b_o(u_data_b_o)
    );
    
    initial u_clk_i = 1;
    always #10 u_clk_i = ~u_clk_i;  // 50MHz
    
    initial begin
        u_reset_n_i = 0; 
        u_f_switch_button_a_i = 1;
        u_f_switch_button_b_i = 1;
        u_p_switch_button_a_i = 1;
        u_p_switch_button_b_i = 1;
        
        // 通道 波形類型 頻率倍數(shù) 相位
        // a sine x1 0 \ b square x1 0
        u_mode_switch_button_a_i = 0;
        u_mode_switch_button_b_i = 1;
        #201;
        u_reset_n_i = 1;  
        #10_000_000;
        
        // a square x1 0 \ b square x1 0
        u_mode_switch_button_a_i = 1;
        
        // a square x2 0 \ b square x1 0
        u_f_switch_button_a_i = 0;
        #20_000_000;
        u_f_switch_button_a_i = 1;
        #10_000_000;
        
        // a square x2 90 \ b square x1 0
        u_p_switch_button_a_i = 0;
        #20_000_000;
        u_p_switch_button_a_i = 1;
        #10_000_000;
        
        // a square x2 90 \ b square x1  90
        u_p_switch_button_b_i = 0;
        #20_000_000;
        u_p_switch_button_b_i = 1;
        #10_000_000;
        
        // a square x2 90 \ b triangular  x1 90
        u_mode_switch_button_b_i = 2;
        
        // a square x2 90 \ b triangular x2 90
        u_f_switch_button_a_i = 0;
        #20_000_000;
        u_f_switch_button_a_i = 1;
        #10_000_000;

        $stop;
    end
endmodule

基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器,FPGA,fpga開發(fā)文章來源地址http://www.zghlxwxcb.cn/news/detail-841122.html

四、綜合優(yōu)化

五、布局布線

六、時序仿真

七、板級調試?

到了這里,關于基于vivado+Verilog FPGA開發(fā) — 基于AD9767高速DAC的DDS信號發(fā)生器的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 基于FPGA的高速數(shù)據(jù)采集ATA接口Verilog開發(fā)與Matlab

    基于FPGA的高速數(shù)據(jù)采集ATA接口Verilog開發(fā)與Matlab 摘要: 本文介紹了基于FPGA的高速數(shù)據(jù)采集ATA接口的Verilog開發(fā)與Matlab的應用。通過使用Verilog語言進行FPGA的硬件設計,實現(xiàn)了ATA接口的數(shù)據(jù)采集功能。同時,結合Matlab進行數(shù)據(jù)處理和分析,實現(xiàn)了對采集的數(shù)據(jù)進行實時處理和顯

    2024年02月07日
    瀏覽(21)
  • 基于vivado+Verilog FPGA開發(fā) — GT收發(fā)器

    基于vivado+Verilog FPGA開發(fā) — GT收發(fā)器

    代碼規(guī)范:Verilog 代碼規(guī)范_verilog代碼編寫規(guī)范-CSDN博客 開發(fā)流程:FPGA基礎知識----第二章 FPGA 開發(fā)流程_fpga 一個項目的整個流程-CSDN博客? ?源碼下載:GitHub - Redamancy785/FPGA-Learning-Record: 項目博客:https://blog.csdn.net/weixin_51460407 零、低速通信接口的缺陷 1、同步通信要求傳輸數(shù)據(jù)

    2024年04月17日
    瀏覽(28)
  • 基于FPGA的AES加密解密vivado仿真,verilog開發(fā),包含testbench

    基于FPGA的AES加密解密vivado仿真,verilog開發(fā),包含testbench

    目錄 1.算法描述 2.仿真效果預覽 3.verilog核心程序 4.完整verilog ? ? ? ? ?AES, 高級加密標準, 是采用區(qū)塊加密的一種標準, 又稱Rijndael加密法. 嚴格上來講, AES和Rijndael又不是完全一樣, AES的區(qū)塊長度固定為128比特, 秘鑰長度可以是128, 192或者256. Rijndael加密法可以支持更大范圍的區(qū)

    2024年02月01日
    瀏覽(21)
  • 半導體運動臺基于dsp+fpga+ad+endac的高速數(shù)據(jù)采集FPGA設計(二)

    半導體運動臺基于dsp+fpga+ad+endac的高速數(shù)據(jù)采集FPGA設計(二)

    4 系統(tǒng) FPGA 程序的設計 4.1 設計方法及邏輯設計概述 4.1.1 開發(fā)環(huán)境與設計流程 Quartus II 是 Altera 公司綜合開發(fā)工具,它集成了 FPGA/CPLD 開發(fā)過程中所設計 的所有工具和第三方軟件接口,支持多時鐘分析, LogicLock 基于塊的設計,片上可編 程系統(tǒng) SOPC, 內嵌在線邏輯分析儀 Signal

    2024年02月12日
    瀏覽(13)
  • FPGA實驗筆記_Vivado:DDS信號發(fā)生器;數(shù)碼管;基于DHT11的溫濕度傳感器

    FPGA實驗筆記_Vivado:DDS信號發(fā)生器;數(shù)碼管;基于DHT11的溫濕度傳感器

    目錄 1、 FPGA的DDS信號發(fā)生器 1.1、DDS簡介 1.2、ROM IP核的生成 1.3、波形數(shù)據(jù)的生成 1.4、 ROM的調用 1.5、 完整代碼(包括拓展部分) 2、數(shù)碼管顯示 2.1、數(shù)碼管簡要說明 2.2、SM410564 3、基于DHT11的溫濕度傳感器 3.1、DHT11 3.2、基本思路 3.3、數(shù)據(jù)分離模塊(BTD) 3.4、數(shù)據(jù)轉換模塊(

    2024年02月04日
    瀏覽(97)
  • 基于dsp+fpga+AD+ENDAC的半導體運動臺高速數(shù)據(jù)采集電路仿真設計(四)

    基于dsp+fpga+AD+ENDAC的半導體運動臺高速數(shù)據(jù)采集電路仿真設計(四)

    整個調試驗證與仿真分析分三個步驟:第一步是進行 PCB 檢查及電氣特性測試,主 要用來驗證硬件設計是否正常工作;第二步進行各子模塊功能測試,包括高速光纖串行 通信的穩(wěn)定性與可靠性測試, A/D 及 D/A 轉換特性測試, EnDat 串行通信相關時序測試 與驗證等,主要用來驗

    2024年02月01日
    瀏覽(18)
  • 光刻機基于dsp+fpga+ad+endac光纖傳輸?shù)母咚贁?shù)據(jù)采集與伺服接口系統(tǒng)設計(一)

    光刻機基于dsp+fpga+ad+endac光纖傳輸?shù)母咚贁?shù)據(jù)采集與伺服接口系統(tǒng)設計(一)

    光刻機雙工件臺運動控制系統(tǒng),控制任務相當復雜,要求極高的速度和精度,且設 備體積龐大,各傳感器執(zhí)行器空間距離較遠,線纜眾多現(xiàn)場電磁干擾嚴重。 為滿足控制系統(tǒng)要求,本文利用 DSP 的高速浮點運算能力、 FPGA 強大的并行處理 能力及光纖通信傳輸距離遠、抗干擾

    2024年02月03日
    瀏覽(22)
  • 基于FPGA的DDS原理信號發(fā)生器設計 quartusII 9.1平臺 Verilog HDL語言編程 可產生正弦波

    基于FPGA的DDS原理信號發(fā)生器設計 quartusII 9.1平臺 Verilog HDL語言編程 可產生正弦波

    基于FPGA的DDS原理信號發(fā)生器設計 quartusII 9.1平臺 Verilog HDL語言編程 ?可產生正弦波、方波、鋸齒波以及三角波 ? 頻率幅度可調節(jié) ? 代碼+原理圖 在現(xiàn)代電子技術領域,針對各種應用的信號發(fā)生器是一種非常核心的設備,而基于現(xiàn)場可編程邏輯門陣列(FPGA)的直接數(shù)字合成(

    2024年04月27日
    瀏覽(30)
  • 基于vivado(語言Verilog)的FPGA學習(5)——跨時鐘處理

    基于vivado(語言Verilog)的FPGA學習(5)——跨時鐘處理

    慢時鐘到快時鐘一般都不需要處理,關鍵需要解決從快時鐘到慢時鐘的問題,因為可能會漏信號或者失真,比如: 第一種辦法是開環(huán)解決方案,也就是人為設置目標信號脈寬大于1.5倍的周期。但是容易和設計要求沖突 所以第二個大方法是閉環(huán)解決方案,也就是從改善同步方

    2024年02月03日
    瀏覽(22)
  • 基于vivado(語言Verilog)的FPGA學習(2)——zedboard開機測試和程序燒寫

    基于vivado(語言Verilog)的FPGA學習(2)——zedboard開機測試和程序燒寫

    終于找到之前寫的部分了,在OneNote上,以后還是專注寫在一個地方 ZedBoard 可以通過四個不同的方法燒寫,這些方法是: USB-JTAG 這是默認的并且是最直接的燒寫 ZedBoard 的方法 , 這只要通過 ZedBoard 工具包的 USB 到 micro-USB 連接線就可以直接完成。 傳統(tǒng) JTAG 板卡上有一個可用的

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包