初级会员
- 积分
- 58
- 金钱
- 58
- 注册时间
- 2020-6-21
- 在线时间
- 19 小时
|
1金钱
- `timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 2020/06/20 22:33:23
- // Design Name:
- // Module Name: led_twinkle
- // Project Name:
- // Target Devices:
- // Tool Versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- //****************************************Copyright (c)***********************************//
- //原子哥在线教学平台:www.yuanzige.com
- //技术支持:www.openedv.com
- //淘宝店铺:http://openedv.taobao.com
- //关注微信公众平台微信号:"正点原子",免费获取ZYNQ & FPGA & STM32 & LINUX资料。
- //版权所有,盗版必究。
- //Copyright(C) 正点原子 2018-2028
- //All rights reserved
- //----------------------------------------------------------------------------------------
- // File name: led_twinkle
- // Last modified Date: 2019/4/14 10:55:56
- // Last Version: V1.0
- // Descriptions: LED灯闪烁
- //----------------------------------------------------------------------------------------
- // Created by: 正点原子
- // Created date: 2019/4/14 10:55:56
- // Version: V1.0
- // Descriptions: The original version
- //
- //----------------------------------------------------------------------------------------
- //****************************************************************************************//
- module led_twinkle(
- input clk_n, //系统时钟
- input rst_n, //系统复位,低电平有效
- output reg led, //LED灯
- output reg led2
- );
- //reg define
- reg [25:0] cnt ;
- reg [31:0] led2_cnt;
- //*****************************************************
- //** main code
- //*****************************************************
- //对计数器的值进行判断,以输出LED的状态
- //assign led = (cnt < 26'd2500_0000) ? 1'b0 : 1'b1 ;
- //assign led = (cnt < 26'd5) ? 2'b01 : 2'b10 ; //仅用于仿真
- //计数器在0~5000_000之间进行计数
- always [url=home.php?mod=space&uid=95564]@[/url] (posedge clk_n or negedge rst_n) begin
- if(!rst_n) begin
- cnt <= 26'd0;
- led2_cnt <= 32'd0;
- led <= 1'b0;
- led2 <= 1'b1;
- end
- // else if(cnt < 26'd5000_0000) begin
- else if(cnt < 26'd10) begin //仅用于仿真
- cnt <= cnt + 1'b1;
- led <= led;
- end
- else begin
- cnt <= 26'd0;
- led <= ~led;
- end
- end
- always @(posedge clk_n) begin
- // if(led2_cnt < 32'd5000_0000) begin
- if(led2_cnt < 32'd10) begin
- led2_cnt <= led2_cnt + 1'b1;
- led2 <= led2;
- end
- else begin
- led2 <= ~led2;
- led2_cnt <= 32'd0;
- end
- end
- endmodule
复制代码 这个程序是从LED例子里面改的,程序下载到板子后LED能闪烁,但LED2不能闪烁,一直亮,仿真LED和LED2的电平都能正常翻转,高手帮我看看问题出在哪里了,谢谢
|
最佳答案
查看完整内容[请看2#楼]
首先程序里面就有一处错误,同一个变量是不能在不同的always块里面赋值的,否则会造成错误,led2和led2_cnt就在不同的always块里面多次赋值了
|