这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 136.finema CPLD 进程帖(理解VGA时序)

共29条 2/3 1 2 3 跳转至
助工
2013-07-07 21:59:00     打赏
11楼
好了,现在硬件和软件都调通了,时刻准备着学习教主开启的系列教程。

院士
2013-07-08 08:56:45     打赏
12楼
楼主的进程帖不错,若把重要的进程都放在首帖上,大家看起来就方便多了

菜鸟
2013-07-24 23:02:12     打赏
13楼
kankan de ne ,keyi de a

助工
2013-09-04 23:27:15     打赏
14楼

2013-09-04

折腾了2晚,今晚终于完成了我的第一份课后作业——点亮LED灯。

 

主要是跟着版主的视频学习。

 

我的代码如下:

//////////////////////////////////////////////////////////////////////////////////
// Engineer: 136.finema
//
// Create Date:    22:35:14 09/03/2013
//////////////////////////////////////////////////////////////////////////////////

 

module Led(led); //模块名
output [7:0] led; //输出口
reg [7:0] led;  //寄存器

always
begin
 //led <= 8'b10101010; //间隔输出 Led1亮Led2灭....
 led <= 8'b01010101;  //间隔输出 Led1灭Led2亮....
end

endmodule

 

 


助工
2013-09-04 23:29:07     打赏
15楼

LED的代码昨晚已经写好了,但是进行编译时报错误,如下:

1.Warning (292000): FLEXlm software error: Invalid (inconsistent) license key.  The license key and data for the feature do not match.  This usually happens when a license file has been altered. Feature:       quartus License path:  E:\devs\altera\12.0\quartus\bin\license.dat; FLEXnet Licensing error:-8,523 For further information, refer to the FLEXnet Licensing documentation, available at "www.acresso.com".
2.Error (119013): Current license file does not support the EPM240T100C5 device

说当前授权文件不支持EPM240T100C5设备。 但我明明都破解成功,已经没30天的限制提示了,啥原因啊?

后来在群里咨询了一下,版主和群里的成员都有提到是破解有问题。

 

我又用我原来的破解程序,重试了几次,还是不行。

后来从群里共享下了个“Crack_QII_12.0_Windows密码12345.rar”的破解程序,重新破解,问题解决。

注意,如果运行“Quartus_12.0_x86破解器.exe” 点应用时,提示“什么文件正在使用,需要关闭程序文件,再继续”的,应该用“sys_cpt.dll.BAK” 还原回“sys_cpt.dll” 再运行破解。

 

 


助工
2013-09-05 23:29:55     打赏
16楼

跟着版主学。今晚完成了第二份课后作业——LED1秒闪烁。代码如下。 明晚跟着做仿真。


`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
//学号: 136.finema
//
//创建时间:    21:43:14 09/05/2013
//名称:led_flicker
//功能:LED间隔1秒闪烁
//////////////////////////////////////////////////////////////////////////////////

module led_ficker(sys_clk,sys_rst,led);
 input sys_clk;   //输入时钟信号
 input sys_rst;   //输入复位信号
 output [7:0] led;  //输出信号
 
 //变量定义
 reg [7:0] led;
 reg [25:0] counter;  //计数器.  50MHz时钟, 因此计数器要计数 50M次=50*1000*1000 就为1秒
     
 //如果复位,则LED全亮,计数器给0
 //计数器到49999999,则反转一下
 
 //计数器的逻辑处理
 always @(posedge sys_clk,negedge sys_rst) //只对时钟上升沿信号和复位下降沿信号敏感
 begin
  if (!sys_rst)
   counter <=26'd0;
  else
   begin
    if (counter==26'd49999999)
     counter<=26'd0;
    else
     counter<=counter+1'b1;
   end
 end
 
 //led的逻辑处理
 always @(posedge sys_clk,negedge sys_rst)
 begin
  if (!sys_rst)
   led <= 8'b11111111;
  else
   begin
    if (counter==26'd49999999)
     led<=~led;    
   end
 end

endmodule


助工
2013-09-08 09:53:49     打赏
17楼

2013.09.08

昨天,看视频学习了Modersim testbench文件的编写,以及modersim软件的使用。

 

以下是 LED1秒闪烁的testbench源代码。

 


`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
//学号: 136.finema
//
//创建时间:    11:26:14 09/07/2013
//名称:led_flicker_test
//功能:LED间隔1秒闪烁测试
//////////////////////////////////////////////////////////////////////////////////

module led_flicker_test;
 
 //变量定义
 //输入
 reg sys_clk;
 reg sys_rst;
 
 //输出
 wire [7:0] led;
 
 
 //时钟激烈产生, 周期20ns,即50MHz
 initial
 begin
  sys_clk = 0;
  forever
   # 10 sys_clk = ~sys_clk;
 end

 //复位激励产生
 initial
 begin
  sys_rst = 1;
  # 10 sys_rst = 0;
  # 50 sys_rst = 1;
 end
 
 
 //被测模块实例
 led_flicker led_flicker_inst(
  .sys_clk(sys_clk),
  .sys_rst(sys_rst),
  .led(led)
 );
 
endmodule


助工
2013-09-08 10:54:20     打赏
18楼

2013.09.08

今天,根据前2节LED课学的内容,自己编了 LED流水灯。 代码如下:

 

`timescale 1ns / 1ps
`define ONE_SECOND  26'd49999999 //50MHz时钟, 因此计数器要计数 50M次=50*1000*1000 就为1秒

//////////////////////////////////////////////////////////////////////////////////
//学号: 136.finema
//
//创建时间:    10:00:14 09/08/2013
//名称:led_water
//功能:LED流水灯
//算法:每秒种点亮1盏灯,点够8盏,又重新来
//////////////////////////////////////////////////////////////////////////////////

module led_water(sys_clk,sys_rst,led);
 input sys_clk;   //输入时钟信号
 input sys_rst;   //输入复位信号
 output [7:0] led;  //输出信号
 
 //变量定义 
 reg [7:0] led;
 reg [25:0] timeCounter;  //时间计数器. 
 
 //计数器的逻辑处理
 always @(posedge sys_clk,negedge sys_rst) //只对时钟上升沿信号和复位下降沿信号敏感
 begin
  if (!sys_rst)
   timeCounter <=26'd0;
  else
   begin
    if (timeCounter==`ONE_SECOND)
     timeCounter<=26'd0;
    else
     timeCounter<=timeCounter+1'b1;
   end
 end
 
 
 //led的逻辑处理
 always @(posedge sys_clk,negedge sys_rst)
 begin
  if (!sys_rst)
   led <= 8'b11111111;
  else
   begin
    if (timeCounter==`ONE_SECOND)
    begin
     if (led==8'b00000000)
      led <= 8'b11111111;
     else
      led <=(led<<1);  //像左移位
    end
       
   end
 end

endmodule


助工
2013-09-08 17:07:49     打赏
19楼

2013.09.08

完成第四份课后作业——LED跑马灯

 

看视频学习,学到了用位拼接运算符,进行循环移位。 不过我进行实现时没有用拼接运算,而是用了求反移位,相对来说代码没版主的优雅。

 

 

`timescale 1ns / 1ps
`define ONE_SECOND  26'd49999999 //50MHz时钟, 因此计数器要计数 50M次=50*1000*1000 就为1秒

//////////////////////////////////////////////////////////////////////////////////
//学号: 136.finema
//
//创建时间:    16:31:14 09/08/2013
//名称:led_run
//功能:LED跑马灯,按照顺序1~8, 每秒种只点亮1盏灯,点够8盏,又重新来
//////////////////////////////////////////////////////////////////////////////////

module led_run(sys_clk,sys_rst,led);
 input sys_clk;   //输入时钟信号
 input sys_rst;   //输入复位信号
 output [7:0] led;  //输出信号
 
 //变量定义 
 reg [7:0] led;
 reg [25:0] timeCounter;  //时间计数器. 
 
 //计数器的逻辑处理
 always @(posedge sys_clk,negedge sys_rst) //只对时钟上升沿信号和复位下降沿信号敏感
 begin
  if (!sys_rst)
   timeCounter <=26'd0;
  else
   begin
    if (timeCounter==`ONE_SECOND)
     timeCounter<=26'd0;
    else
     timeCounter<=timeCounter+1'b1;
   end
 end
 
 
 //led的逻辑处理
 always @(posedge sys_clk,negedge sys_rst)
 begin
  if (!sys_rst)
   led <= 8'b11111110;
  else
   begin
    if (timeCounter==`ONE_SECOND)
    begin
     if (led==8'b01111111)
      led <= 8'b11111110;
     else
      led <=~((~led)<<1);  //先求反,再向左移位,最后求反
    end
       
   end
 end

endmodule

 

 


助工
2013-09-08 17:08:33     打赏
20楼
暂住。

共29条 2/3 1 2 3 跳转至

回复

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