NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管

这篇具有很好参考价值的文章主要介绍了NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. vivado文件编写,根据模块设计图

系统的时钟为100MHz,管脚E3提供;使用复位引脚为拨码开关,管脚K15
NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管

1.1 点亮数码管之前首先产生一个100ms自增长的数据data[26:0]

1.1.1 时序图

NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管

1.1.2 data_gen.v 文件

module  data_gen
#(
    parameter   CNT_100MS_MAX = 27'd9_999_999,
    parameter   DATA_MAX = 27'd99_999_999

)
(
    input   wire           sys_clk     ,
    input   wire           sys_rst_n   ,

    output  reg     [26:0] data
);

reg     [26:0]  cnt_100ms;
reg             cnt_flag;

//cnt_100ms
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_100ms <= 27'd0;
    else    if(cnt_100ms == CNT_100MS_MAX)
        cnt_100ms <= 27'd0;
    else
        cnt_100ms <= cnt_100ms + 1'b1;

//cnt_flag
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_flag <= 1'b0;
    else    if(cnt_100ms == CNT_100MS_MAX - 1'b1)
        cnt_flag <= 1'b1;
    else
        cnt_flag <= 1'b0;

//data
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        data <= 27'd0;
    else    if(cnt_flag == 1'b1 && data == DATA_MAX)
        data <= 27'd0;
    else    if(cnt_flag == 1'b1)
        data <= data + 1'b1;
    else
        data <= data;

endmodule

1.1.3 tb_data_gen.v 文件

`timescale  1ns/1ns
module  tb_data_gen();

reg    sys_clk;
reg    sys_rst_n;
wire    [26:0]  data;


initial
    begin 
        sys_clk = 1'b0;
        sys_rst_n = 1'b0;
        #20
        sys_rst_n = 1'b1;
    end

always #10 sys_clk = ~sys_clk;

data_gen
#(
    .CNT_100MS_MAX (27'd99_999_999),
    .DATA_MAX      (27'd99_999_999)

)
data_gen_inst
(
    .sys_clk    (sys_clk  ),
    .sys_rst_n  (sys_rst_n),

    .data       (data     )
);

endmodule

1.2 点亮数码管的核心在于将十进制数不通过除法器转换为二进制,这里使用bcd_8421码

1.2.0 将十进制11转换为bcd_8421码的简单过程

转换的全程使用判断移位来完成,转换的数有几个二进制就要判断移位多少次,前面要添加 4n 个0
即十进制11 的二进制为1011,4位二进制,需要4次,添加 4
2 = 8个0
如果当前的数大于4,要进行 +3 再移位
NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管

1.2.1 时序图

NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管

1.2.2 bcd_8421.v文件

module  bcd_8421
(
    input   wire            sys_clk     ,
    input   wire            sys_rst_n   ,
    input   wire    [26:0]  data        ,
    
    output  reg     [3:0]   in          , //个
    output  reg     [3:0]   ten         , //十
    output  reg     [3:0]   hun         , //百
    output  reg     [3:0]   tho         , //千
    output  reg     [3:0]   ten_tho     , //万
    output  reg     [3:0]   hun_tho     , //十万
    output  reg     [3:0]   mil         , //百万
    output  reg     [3:0]   must          //千万

);

reg     [4:0]   cnt_shift   ;
reg     [58:0]  data_shift  ;
reg             shift_flag  ;


always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_shift <= 5'd0;
    else    if((cnt_shift == 5'd28) && (shift_flag == 1'b1))
        cnt_shift <= 5'd0;
    else    if(shift_flag == 1'b1)
        cnt_shift <= cnt_shift + 1'b1;
    else
        cnt_shift <= cnt_shift;

always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        data_shift <= 59'd0;
    else    if(cnt_shift == 5'd0)
        data_shift <= {32'b0,data};
    else    if((cnt_shift <= 5'd27) && (shift_flag == 1'b0))
        begin
            data_shift[30:27] <= (data_shift[30:27] > 4) ? (data_shift[30:27] + 2'd3) : (data_shift[30:27]);
            data_shift[34:31] <= (data_shift[34:31] > 4) ? (data_shift[34:31] + 2'd3) : (data_shift[34:31]);
            data_shift[38:35] <= (data_shift[38:35] > 4) ? (data_shift[38:35] + 2'd3) : (data_shift[38:35]);
            data_shift[42:39] <= (data_shift[42:39] > 4) ? (data_shift[42:39] + 2'd3) : (data_shift[42:39]);
            data_shift[46:43] <= (data_shift[46:43] > 4) ? (data_shift[46:43] + 2'd3) : (data_shift[46:43]);
            data_shift[50:47] <= (data_shift[50:47] > 4) ? (data_shift[50:47] + 2'd3) : (data_shift[50:47]);
            data_shift[54:51] <= (data_shift[54:51] > 4) ? (data_shift[54:51] + 2'd3) : (data_shift[54:51]);
            data_shift[58:55] <= (data_shift[58:55] > 4) ? (data_shift[58:55] + 2'd3) : (data_shift[58:55]);
        end
    else    if((cnt_shift <= 5'd27) && (shift_flag == 1'b1))    
        data_shift <= data_shift << 1;
    else
        data_shift <= data_shift;

always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        shift_flag <= 1'b0;
    else
        shift_flag <= ~shift_flag;


always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        begin
            in      <= 4'b0;
            ten     <= 4'b0;
            hun     <= 4'b0;
            tho     <= 4'b0;
            ten_tho <= 4'b0;
            hun_tho <= 4'b0;
            mil     <= 4'b0;
            must    <= 4'b0;
        end
    else    if(cnt_shift == 5'd28)
        begin
            in      <= data_shift[30:27];
            ten     <= data_shift[34:31];
            hun     <= data_shift[38:35];
            tho     <= data_shift[42:39];
            ten_tho <= data_shift[46:43];
            hun_tho <= data_shift[50:47];
            mil     <= data_shift[54:51];
            must    <= data_shift[58:55];
        end

endmodule

1.2.3 tb_bcd_8421.v文件

`timescale  1ns/1ns
module  tb_bcd_8421();

//声明变量
reg            sys_clk     ;
reg            sys_rst_n   ;
reg    [26:0]  data        ;

wire     [3:0]   in        ; 
wire     [3:0]   ten       ; 
wire     [3:0]   hun       ; 
wire     [3:0]   tho       ; 
wire     [3:0]   ten_tho   ; 
wire     [3:0]   hun_tho   ; 
wire     [3:0]   mil       ; 
wire     [3:0]   must      ; 


//初始化
initial
    begin
        sys_clk = 1'b1;
        sys_rst_n <= 1'b0;
        data <= 27'd0;
        #30
        sys_rst_n <= 1'b1;
        data <= 27'd12_345_678;
        #3000
        data <= 27'd87_654_321;
        #3000
        data <= 27'd98_765_432;
        #3000
        data <= 27'd99_999_999;
    end


always #10 sys_clk = ~sys_clk;


bcd_8421    bcd_8421_inst
(
    .sys_clk    (sys_clk  ),
    .sys_rst_n  (sys_rst_n),
    .data       (data     ),

    .in         (in       ), //个
    .ten        (ten      ), //十
    .hun        (hun      ), //百
    .tho        (tho      ), //千
    .ten_tho    (ten_tho  ), //万
    .hun_tho    (hun_tho  ), //十万
    .mil        (mil      ), //百万
    .must       (must     )  //千万
);

endmodule

1.3 将bcd_8421包装为seg_dynamic

此处需要注意的问题就是数据同步,即sel信号和seg信号必须保持同步,否则会发生显示错误

1.3.1 时序图

NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管
从时序图中可以看出,seg_data 随着 cnt_sel 变化,且1ms改变一次,滞后 cnt_sel 一个周期 10ns,这里是否会因为in~must 变化太快而无法读取到准确的数值?

这里不会,原因是 data 数据变化的周期是100ms,远远大于 flag_1ms 和 cnt_sel 信号 1ms 的改变,即使 seg_data 读取一个完整的数据需要8个周期8ms,最后传到 seg 的数据也是准确的。

若是 data 数据的变化太快,小于 8ms ,此时 seg 的数据会出错;但是这种情况下,数码管显示的画面人眼是无法识别的,只能看到不停闪烁。

1.3.2 seg_dynamic.v文件

module  seg_dynamic
#(
    parameter   CNT_MAX =   17'd99_999
)
(
    input   wire            sys_clk     ,
    input   wire            sys_rst_n   ,
    input   wire    [26:0]  data        ,

    output  reg     [7:0]   sel         ,
    output  reg     [7:0]   seg          
);



wire     [3:0]   in          ;
wire     [3:0]   ten         ;
wire     [3:0]   hun         ;
wire     [3:0]   tho         ;
wire     [3:0]   ten_tho     ;
wire     [3:0]   hun_tho     ;
wire     [3:0]   mil         ;
wire     [3:0]   must        ;


reg     [3:0]   seg_data    ;
reg     [2:0]   cnt_sel     ;

reg     [16:0]  cnt_1ms     ;
reg             flag_1ms    ;

//cnt_1ms:1ms循环计数
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_1ms <=  17'd0;
    else    if(cnt_1ms == CNT_MAX)
        cnt_1ms <=  17'd0;
    else
        cnt_1ms <=  cnt_1ms + 1'b1;

//flag_1ms:1ms标志信号
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        flag_1ms    <=  1'b0;
    else    if(cnt_1ms == CNT_MAX - 1'b1)
        flag_1ms    <=  1'b1;
    else
        flag_1ms    <=  1'b0;

//cnt_sel:从0到7循环数,用于选择当前显示的数码管
always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_sel <=  3'd0;
    else    if((cnt_sel == 3'd7) && (flag_1ms == 1'b1))
        cnt_sel <=  3'd0;
    else    if(flag_1ms == 1'b1)
        cnt_sel <=  cnt_sel + 1'b1;
    else
        cnt_sel <=  cnt_sel;


always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        seg_data <= 8'b0000_0011;
    else
        begin
            case(cnt_sel)
                3'd0: seg_data <= in     ;
                3'd1: seg_data <= ten    ;
                3'd2: seg_data <= hun    ;
                3'd3: seg_data <= tho    ;
                3'd4: seg_data <= ten_tho;
                3'd5: seg_data <= hun_tho;
                3'd6: seg_data <= mil    ;
                3'd7: seg_data <= must   ;
            endcase
        end

always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        sel <= 8'b0111_1111;
    else    if(flag_1ms == 1'b1)
        begin
            case(cnt_sel)
                3'd0: sel <= 8'b1111_1110;
                3'd1: sel <= 8'b1111_1101;
                3'd2: sel <= 8'b1111_1011;
                3'd3: sel <= 8'b1111_0111;
                3'd4: sel <= 8'b1110_1111;
                3'd5: sel <= 8'b1101_1111;
                3'd6: sel <= 8'b1011_1111;
                3'd7: sel <= 8'b0111_1111;
            endcase
        end


always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        seg <= 8'b0000_0011;
    else    if(flag_1ms == 1'b1)
        begin
            case(seg_data)
                4'd0: seg <= 8'b0000_0011;
                4'd1: seg <= 8'b1001_1111;
                4'd2: seg <= 8'b0010_0101;
                4'd3: seg <= 8'b0000_1101;
                4'd4: seg <= 8'b1001_1001;
                4'd5: seg <= 8'b0100_1001;
                4'd6: seg <= 8'b0100_0001;
                4'd7: seg <= 8'b0001_1111;
                4'd8: seg <= 8'b0000_0001;
                4'd9: seg <= 8'b0000_1001;
            endcase
        end
    else
        seg <= seg;



bcd_8421    bcd_8421_inst
(
    .sys_clk    (sys_clk  ),
    .sys_rst_n  (sys_rst_n),
    .data       (data     ),

    .in         (in       ), //个
    .ten        (ten      ), //十
    .hun        (hun      ), //百
    .tho        (tho      ), //千
    .ten_tho    (ten_tho  ), //万
    .hun_tho    (hun_tho  ), //十万
    .mil        (mil      ), //百万
    .must       (must     )  //千万
);


endmodule

1.3.3 tb_seg_dynamic.v文件

`timescale  1ns/1ns
module  tb_seg_dynamic();


reg              sys_clk    ;
reg              sys_rst_n  ;
reg      [26:0]  data       ;

wire     [7:0]   sel        ;
wire     [7:0]   seg        ;


initial
    begin 
        sys_clk = 1'b0;
        sys_rst_n = 1'b0;
        data <= 27'd0;
        #20
        sys_rst_n = 1'b1;
    end

always #10 sys_clk = ~sys_clk;


seg_dynamic     
#(
    .CNT_MAX(17'd99_999)
)
seg_dynamic_inst
(
    .sys_clk    (sys_clk  ),
    .sys_rst_n  (sys_rst_n),
    .data       (data     ),

    .sel        (sel      ),
    .seg        (seg      ) 
);

endmodule

1.3.4 sel信号和seg信号不同步的问题

always@(posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        sel <= 8'b0111_1111;
    else    if(flag_1ms == 1'b1)
        begin
            case(cnt_sel)
                3'd0: sel <= 8'b1111_1110;
                3'd1: sel <= 8'b1111_1101;
                3'd2: sel <= 8'b1111_1011;
                3'd3: sel <= 8'b1111_0111;
                3'd4: sel <= 8'b1110_1111;
                3'd5: sel <= 8'b1101_1111;
                3'd6: sel <= 8'b1011_1111;
                3'd7: sel <= 8'b0111_1111;
            endcase
        end

当此处语句缺少

if(flag_1ms == 1’b1)

会产生不同步,时序图会发生下面的变化,数码管会从第二位开始显示,第一位保持为0,发生显示错误

NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管

1.4 将seg_dynamic和data_gen包装为top_seg_dynamic

1.4.1 top_seg_dynamic文件

module  top_seg_dynamic
(
    input   wire            sys_clk     ,
    input   wire            sys_rst_n   ,
    
    output  wire    [7:0]   sel         ,
    output  wire    [7:0]   seg
);


wire     [26:0]  data     ;


data_gen
#(
    .CNT_100MS_MAX (27'd99_999_999),
    .DATA_MAX      (27'd99_999_999)

)
data_gen_inst
(
    .sys_clk    (sys_clk  ),
    .sys_rst_n  (sys_rst_n),

    .data       (data     )
);


seg_dynamic     
#(
    .CNT_MAX(17'd99_999)
)
seg_dynamic_inst
(
    .sys_clk    (sys_clk  ),
    .sys_rst_n  (sys_rst_n),
    .data       (data     ),

    .sel        (sel      ),
    .seg        (seg      ) 
);

endmodule

1.4.2 tb_top_seg_dynamic文件

`timescale  1ns/1ns
module  tb_top_seg_dynamic();

reg         sys_clk;
reg         sys_rst_n;

wire    [7:0]   sel;
wire    [7:0]   seg;


//初始化
initial
    begin
        sys_clk = 1'b0;
        sys_rst_n <= 1'b0;
        #30
        sys_rst_n <= 1'b1;
    end

always #10 sys_clk = ~sys_clk;

//defparam     top_seg_dynamic_inst.seg_dynamic_inst.CNT_MAX = 20'd5;
//defparam     top_seg_dynamic_inst.data_gen_inst.CNT_MAX = 20'd5;

top_seg_dynamic top_seg_dynamic_inst
(
    .sys_clk    (sys_clk),
    .sys_rst_n  (sys_rst_n),

    .sel        (sel),
    .seg        (seg)
);
endmodule

2. NEXYS4_DDR迪芝伦XC7A100TCSG324-1型的原理图与管脚绑定

2.1相关原理图

数码管原理图
NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管
8个8位数码管,从左到右,且为共阳极数码管,即端口为低电平时点亮
片选信号为低电平时数码管亮

sel U13 K2 T14 P14 J14 T9 J18 J17
片选 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0

数码管的显示示意图
NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管

共阳极,低电平时点亮文章来源地址https://www.toymoban.com/news/detail-409529.html

T10 R10 K16 K13 P15 T11 L18 H15
seg a b c d e f g dp 0h
0 0 0 0 0 0 0 1 1 03
1 1 0 0 1 1 1 1 1 9F
2 0 0 1 0 0 1 0 1 25
3 0 0 0 0 1 1 0 1 0D
4 1 0 0 1 1 0 0 1 99
5 0 1 0 0 1 0 0 1 49
6 0 1 0 0 0 0 0 1 41
7 0 0 0 1 1 1 1 1 1F
8 0 0 0 0 0 0 0 1 01
9 0 0 0 0 1 0 0 1 09
A 0 0 0 1 0 0 0 1 11
B 1 1 0 0 0 0 0 1 C1
C 0 1 1 0 0 0 1 1 63
D 1 0 0 0 0 1 0 1 85
E 0 1 1 0 0 0 0 1 61
F 0 1 1 1 0 0 0 1 71

2.2 seg_dynamic.xdc文件

set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]
set_property IOSTANDARD LVCMOS33 [get_ports sys_rst_n]

set_property IOSTANDARD LVCMOS33 [get_ports {seg[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[0]}]

set_property IOSTANDARD LVCMOS33 [get_ports {sel[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sel[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sel[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sel[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sel[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sel[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sel[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sel[0]}]

set_property PACKAGE_PIN E3   [get_ports sys_clk]
set_property PACKAGE_PIN J15  [get_ports sys_rst_n]


set_property PACKAGE_PIN J17 [get_ports {sel[0]}]
set_property PACKAGE_PIN J18 [get_ports {sel[1]}]
set_property PACKAGE_PIN T9  [get_ports {sel[2]}]
set_property PACKAGE_PIN J14 [get_ports {sel[3]}]
set_property PACKAGE_PIN P14 [get_ports {sel[4]}]
set_property PACKAGE_PIN T14 [get_ports {sel[5]}]
set_property PACKAGE_PIN K2  [get_ports {sel[6]}]
set_property PACKAGE_PIN U13 [get_ports {sel[7]}]

set_property PACKAGE_PIN H15 [get_ports {seg[0]}]
set_property PACKAGE_PIN L18 [get_ports {seg[1]}]
set_property PACKAGE_PIN T11 [get_ports {seg[2]}]
set_property PACKAGE_PIN P15 [get_ports {seg[3]}]
set_property PACKAGE_PIN K13 [get_ports {seg[4]}]
set_property PACKAGE_PIN K16 [get_ports {seg[5]}]
set_property PACKAGE_PIN R10 [get_ports {seg[6]}]
set_property PACKAGE_PIN T10 [get_ports {seg[7]}]


到了这里,关于NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,点亮板载的8个8位数码管的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ​ 模拟嵌入式边缘计算卡设计方案:367-XC7Z100 板卡 基于zynq XC7Z100 FMC接口通用计算平台

    基于zynq XC7Z100 FMC接口通用计算平台 北京太速科技板卡由SoC XC7Z100-2FFG900I芯片来完成卡主控及数字信号处理,XC7Z100内部集成了两个ARM Cortex-A9核和一个kintex 7的FPGA,通过PL端FPGA扩展FMC、光纤、IO等接口,PS端ARM扩展网络、USB、RS232等接口。板卡适应于图像处理、震动、通信、雷达

    2024年02月11日
    浏览(39)
  • Xilinx Zynq-7000系列XC7Z035/XC7Z045高性能SoC处理器评估板PS端ETH RJ45接口

    (数据手册见Datasheet目录) ZYNQ7035 PS端ETH RJ45接口 评估板XQ6657Z35-EVM ,ZYNQ XC7Z035/45的PS端 引出了1路千兆网口,其引脚定义如下图:

    2024年02月12日
    浏览(39)
  • FPGA硬件架构——具体型号是xc7k325tffg676-2为例

    1.共如下图14个时钟域,XmYn(按坐标理解) 2.IOB(IOB为可编程输入输出单元,当然在普通Bank上的IOB附近还有很多时钟资源,例如PLL,MMCM资源。), 2.1 FPGA的Bank分为HP Bank和HR Bank,二者对电压的要求范围不同,HR支持更大的电压范围。一个只能同时接一组电压。 2.2 如下为单个IO的结构

    2024年01月25日
    浏览(44)
  • XC7VX690T板卡设计资料:VC709E 基于FMC接口的Virtex7 XC7VX690T PCIeX8 接口卡 软件无线电处理平台 图形图像硬件加速器 Net FPGA

    一、板卡概述         本板卡基于Xilinx公司的FPGA XC7VX690T-FFG1761 芯片,支持PCIeX8、两组 64bit DDR3容量8GByte,HPC的FMC连接器,板卡支持各种FMC子卡扩展。软件支持windows,Linux操作系统。   二、功能和技术指标:   板卡功能 参数内容 主处理器 XC7V690T-2FFG1761I 板卡标准 PCI 

    2024年02月11日
    浏览(39)
  • 关于开发Spartan-7 xc7s6 FPGA综合编译时遇到的问题记录

    因为没有找到相关例程,板子也是不是官方的。因此在综合编译时遇到一些警告和错误,在这里记录一下,写的不是很正确,也希望有大佬能够指点一二。 1.设计中无约束 [Constraints 18-5210] No constraints selected for write. 警告设计中无约束,实际上我是有约束文件的,在XILINX官方论

    2023年04月22日
    浏览(56)
  • Xilinx XC7Z020双核ARM+FPGA开发板试用合集——自定义硬件工程

    本期测试板卡是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC工业级核心板,处理器集成PS端双核ARM Cortex-A9 + PL端Artix-7架构28nm可编程逻辑资源。 下面是测试内容,欢迎查阅。 SD卡启动设置 根据《TLZ7x-EasyEVM-S评估板硬件说明书》可知,评估板的

    2023年04月08日
    浏览(44)
  • AX7A200教程(5): 基于DDR3的串口发送和接收

    本章节主要使用ddr3做为缓存,串口接收的数据通过ddr缓存后通过发送模块发送出去。整体的功能框图所下图所示 串口接收到8位数据后,将4个8位数据合并为一个32位数据写入到写fifo,当写入8个32位数据后,也就是一共256位宽数据,这时会发出一个突发写使能信号 wr_len_en ,将

    2023年04月16日
    浏览(33)
  • 【TES600】基于XC7K325T与TMS320C6678的通用信号处理平台

    板卡概述         TES600是一款基于FPGA+DSP协同处理架构的通用高性能实时信号处理平台,该平台采用1片TI的KeyStone系列多核浮点/定点DSP TMS320C6678作为主处理单元,采用1片Xilinx的Kintex-7系列FPGA XC7K325T作为协处理单元,具有1个FMC子卡接口,具有4路SFP+万兆光纤接口,具有2路

    2024年02月06日
    浏览(43)
  • 图像处理 信号处理板 设计原理图:367-基于zynq XC7Z100 FMC接口通用计算平台

    基于zynq XC7Z100 FMC接口通用计算平台   板卡由SoC XC7Z100-2FFG900I芯片来完成卡主控及数字信号处理,XC7Z100内部集成了两个ARM Cortex-A9核和一个kintex 7的FPGA,通过PL端FPGA扩展FMC、光纤、IO等接口,PS端ARM扩展网络、USB、RS232等接口。板卡适应于图像处理、震动、通信、雷达等前端信号

    2024年02月11日
    浏览(46)
  • AX7A200教程(5): 基于DDR3的串口发送和接收(一次突发)(一)

    本章节主要使用ddr3做为缓存,串口接收的数据通过ddr缓存后通过发送模块发送出去。整体的功能框图所下图所示 串口接收到8位数据后,将4个8位数据合并为一个32位数据写入到写fifo,当写入8个32位数据后,也就是一共256位宽数据,这时会发出一个突发写使能信号 wr_len_en ,将

    2024年02月03日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包