这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 寒月迷亭的进程贴

共15条 2/2 1 2 跳转至
专家
2013-10-07 16:40:14     打赏
11楼

菜鸟
2013-10-07 18:21:02     打赏
12楼

流水灯作业
流水灯左流与右流,只要led左移或者右移就可以了。不具述。
如何用拨码开关控制左流与右流?
我加一个输入,sw1,进行管脚设置,在移位的位置先做一下判断,决定如何移位,如下,
if(!sw1)
 led<=led<<1;
else
 led<=led>>1;
可惜不成功,这是为什么?

下面是源文件。
`timescale 1ns / 1ps

module Led( sys_clk       ,
  sys_rstn      ,
  led       ,
  sw1
      );
//
input              sys_clk       ;
input              sys_rstn      ;
input              sw1   ;
output    [3:0]    led           ;
//
reg       [3:0]    led           ;
reg       [24:0]   delay_cnt     ;
//
always@(posedge sys_clk or negedge sys_rstn)
 begin
  if(!sys_rstn)
   delay_cnt<=25'd0;
  else if(delay_cnt==25'd14999999)
   delay_cnt<=25'd0;
  else
   delay_cnt<=delay_cnt+1'b1; 
 end
always@(posedge sys_clk or negedge sys_rstn)
 begin
  if(!sys_rstn)
   led<=4'b1111;
  else
   begin
    if(delay_cnt==25'd14999999)
     begin
      if(!sw1)
       led<=led<<1;
      else
       led<=led>>1;
      if(led==4'b0000)
       led<=4'b1111;
     end 
    else
     led<=led; 
   end
 end
endmodule


菜鸟
2013-10-07 19:33:36     打赏
13楼

前面12楼用拨码开关控制流水灯的流向的程序没有错,问题出在“配置”上。
请看红圈里的配置文件的目录,

这里给出了一个路径,而不是一个简简单单的文件名,这说明这个用来配置的文件不是当前工程的文件。显然,无论怎么改程序,用一个不是这个工程的文件来配置,总得不到预期的结果。

居然有这种事!

 

双击红圈的位置,可以更改用来配置的文件,改成当前工程生成的文件,应该是下面的样子。

 


菜鸟
2013-10-07 20:18:24     打赏
14楼

跑马灯试验和作业
跑马灯的试验主要是学习移位寄存器。
完成。
下面的程序是用拨码开关控制马跑的方向的。

`timescale 1ns / 1ps

module Led(  sys_clk       ,
       sys_rstn      ,
       led    ,
     sw1
       );
//
input              sys_clk       ;
input              sys_rstn      ;
input              sw1        ;
output    [3:0]    led           ;
//
reg       [3:0]    led           ;
reg       [24:0]   delay_cnt     ;
//
always@(posedge sys_clk or negedge sys_rstn)
 begin
  if(!sys_rstn)
   delay_cnt<=25'd0;
  else if(delay_cnt==25'd14999999)
   delay_cnt<=25'd0;
  else
   delay_cnt<=delay_cnt+1'b1; 
 end
always@(posedge sys_clk or negedge sys_rstn)
 begin
  if(!sys_rstn)
   led<=4'b0111;
  else
   begin
    if(delay_cnt==25'd14999999)
     begin
      if(!sw1)
       led<={led[0],led[3:1]};
      else
       led<={led[2:0],led[3]};
     end 
    else
     led<=led; 
   end
 end
endmodule


菜鸟
2013-10-10 18:26:02     打赏
15楼
加料跑马灯
在前面的跑马灯上加一点儿料。不但亮灯的位置变,灯的亮度也在变。实际上是给一个更高频率的PWM,逐渐提高占空比。这是单片机基本的外设,也是我常用的。
回头设计一个中心对齐的PWM外设。
下面是源文件。没有优化。回复可见。
——回复可见内容——

共15条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]