Vitis HLS流水灯测试

源文件

flowingLights.h

c 复制代码
#pragma once
#include <ap_int.h>
#define SPEED 100
void flowingLights(ap_uint<4>& leds);

flowingLights.cpp

c 复制代码
#include "flowingLights.h"
void flowingLights(ap_uint<4>& leds){
#pragma HLS INTERFACE ap_none port=led
#pragma HLS INTERFACE ap_ctrl_none port=return
	 static ap_uint<32> count = 0;   // 延时计数
	 static ap_uint<4> led_state = 0b1110;
	count++;
	if(count >= SPEED){
		led_state = led_state<<1 | led_state>>3 ;
		count =0;
	}
	leds =led_state;
}

C仿真

flowingLights_tb.cpp

c 复制代码
#include "flowingLights.h"
int main() {
    ap_uint<4> leds;
    for (int i = 0; i < SPEED * 5; i++) {
        flowingLights(leds);
        if (i % SPEED == 0) {
            std::cout << "Cycle " << i << ", leds = "  << leds.to_string(2) << std::endl;
        }
    }
    return 0;
}
bash 复制代码
D:/Xilinx/Vitis_HLS/2020.2/include/floating_point_v7_0_bitacc_cmodel.h:136:0: note: this is the location of the previous definition
 #define __GMP_LIBGMP_DLL 1
 
Cycle 0, leds = 0b1110
Cycle 100, leds = 0b1101
Cycle 200, leds = 0b1011
Cycle 300, leds = 0b0111
Cycle 400, leds = 0b1110
INFO: [SIM 211-1] CSim done with 0 errors.
INFO: [SIM 211-3] *************** CSIM finish ***************

编译生成flowingLights.v

复制代码
module flowingLights (
        ap_clk,
        ap_rst,
        leds
);
xxxx
endmodule //flowingLights

Vivado 仿真

IP 封装







Tang-Nano-1Ks上测试

导入脚本

bash 复制代码
set src_dir "D:/workspace/gitee/0/ming_tang_nano_1k/hls_led/src"
set rtl_dir "D:/workspace/gitee/0/ming_tang_nano_1k/hls_led/src/rtl"
add_file D:/fpga_progect/flowingLights/hls/flowingLights/solution1/impl/verilog/flowingLights.v
add_file D:/workspace/gitee/0/ming_tang_nano_1k/hls_led/src/rtl/TANG_FPGA_Demo_Top.v
add_file  $src_dir/vio_uart_prj.cst
add_file  $src_dir/vio_uart_prj.sdc

hls_led.cst

bash 复制代码
IO_LOC "CLOCK_XTAL_27MHz" 47;
IO_PORT "CLOCK_XTAL_27MHz" IO_TYPE=LVCMOS33 PULL_MODE=UP;


IO_LOC "RESET" 13;
IO_PORT "RESET" IO_TYPE=LVCMOS33 PULL_MODE=UP;


IO_LOC "LED[3]" 40;
IO_PORT "LED[3]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8;
IO_LOC "LED[2]" 11;
IO_PORT "LED[2]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8;
IO_LOC "LED[1]" 10;
IO_PORT "LED[1]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8;
IO_LOC "LED[0]" 9;
IO_PORT "LED[0]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8;

hls_led.sdc

bash 复制代码
create_clock -name CLOCK_XTAL_27MHz -period 37.037 -waveform {0 18.518} [get_ports {CLOCK_XTAL_27MHz}]

TANG_FPGA_Demo_Top.v

verilog 复制代码
module TANG_FPGA_Demo_Top
(
    input CLOCK_XTAL_27MHz,
	input RESET,
    output  [3:0] LED // 110 R, 101 B, 011 G
);


flowingLights u_flowingLights (
    .ap_clk   (CLOCK_XTAL_27MHz),
    .ap_rst(RESET),
    .leds  (LED)
);

endmodule
相关推荐
北京青翼科技10 小时前
青翼科技PCIe总线架构的2路10G光纤通道适配器丨数据采集卡丨PCIe接口板卡 2 路 SFP+光纤收发器
fpga开发·采集卡·fpga板卡·pcie接口·多功能板卡
9527华安11 小时前
2026年FPGA就业培训,临时抱佛脚版本
fpga开发
水云桐程序员11 小时前
Quartus II集成开发环境 |FPGA
笔记·fpga开发·硬件工程·创业创新
XINVRY-FPGA2 天前
XC7VX690T-2FFG1157I Xilinx AMD Virtex-7 FPGA
arm开发·人工智能·嵌入式硬件·深度学习·fpga开发·硬件工程·fpga
Terasic友晶科技2 天前
【案例展示】友晶科技全息传感器桥接解决方案
科技·fpga开发·holoscan·agilex 5·terasic
学习永无止境@2 天前
Verilog中有符号数计算
图像处理·算法·fpga开发
学习永无止境@2 天前
Sobel边缘检测的MATLAB实现
图像处理·opencv·算法·计算机视觉·fpga开发
fei_sun2 天前
数字芯片流程
fpga开发
YaraMemo2 天前
射频链的构成
5g·fpga开发·信息与通信·信号处理·射频工程
fei_sun2 天前
逻辑设计工程技术基础
fpga开发