银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-12-03 | zgf | 初次建立 |
//----------------------------------------------------------// //产生状态改变的输入信号 reg state_sig; always@(posedge fpga_clk or negedge rst_n) if(!rst_n) state_sig <=1'b0; else if(time_cnt == 32'd25_000_000) state_sig <= 1'b1; else state_sig <= 1'b0; //----------------------------------------------------------// parameter led_on = 3'b000;// power low led on parameter led_off = 3'b111;// power high led off reg [2:0] led_r; reg [2:0] led_current_state; reg [2:0] led_next_state; //----------------------------------------------------------// //时序逻辑,控制状态跳转 always@(posedge fpga_clk or negedge rst_n) if(!rst_n) led_current_state <= `STATE_IDLE; else led_current_state <= led_next_state; //----------------------------------------------------------// //组合逻辑,控制状态跳转条件及状态输出 always@(led_current_state or state_sig or rst_n) if(!rst_n) led_next_state <= `STATE_IDLE; else case(led_current_state) `STATE_IDLE:begin if(state_sig) led_next_state <= `STATE_LED_ON; else led_next_state <= `STATE_IDLE; end `STATE_LED_ON:begin if(state_sig) led_next_state <= `STATE_LED_OFF; else led_next_state <= `STATE_LED_ON; end `STATE_LED_OFF:begin if(state_sig) led_next_state <= `STATE_LED_ON; else led_next_state <= `STATE_LED_OFF; end default: led_next_state <= `STATE_IDLE; endcase //----------------------------------------------------------// //逻辑输出 always@(posedge fpga_clk or negedge rst_n) if(!rst_n) led_r <= led_off; else case(led_next_state) `STATE_IDLE: led_r <= led_on; `STATE_LED_ON: led_r <= led_off; `STATE_LED_OFF: led_r <= led_on; endcase //----------------------------------------------------------// //led状态输出 assign fpga_led = led_r;
1、 新建工程,器件选择SL2S-25E-8U213C。输入类型选择RTL输入。
2、 通过点击“源文件”栏的“+”,将例程下的源文件添加到工程中;点击“完成”按钮。或者跳过添加源文件,在设计管理界面新建源文件,并添加到工程。
3、 建立源文件的步骤:点击左侧栏“设计管理”按钮,然后点击“新建文件”按钮,建立状态机模块文件(fsm_ctrl.v)和顶层模块文件(three_fsm.v),并在顶层模块中例化复位控制模块和状态机模块。之后进行语法检查并保存源文件。
4、 点击主界面的“RTL综合”按钮,运行结果无报错后点击左侧栏的“物理约束”按钮,进行引脚绑定。
5、 物理约束添加完成后,进行编译。
6、 将XiST USB Cable 连接到iCore3L的JTAG口,通过Micro USB给板子供电。
7、 将编译生成的bit文件下载到FPGA中。
8、 可以看到iCore3L 上LED灯每1秒切换一次亮灭状态。