minchina 发表于 2013-1-23 20:08:27

接触FPGA不久,新人求助。

这是我的1602程序。打红色的地方存在的时候,液晶不能初始化,但是引脚的电压是对的,即电压是0x38.
删掉了才可以初始化,这是为什么呀、、


module LCD_DRIVER(sys_clk, rs, en, io_out);
input sys_clk;
output rs, en;
outputio_out;

wire en;

reg rs;
regio_out;

regbuffer;

reg lcd_clk;
regsys_counter;
reg en_sel;
regstate;
reglcd_counter;

regaction;

parameter Idel = 8'b0000_0000;
parameter START_DISMODE = 8'b0000_0001;
parameter CLOSE_DIS = 8'b0000_0010;
parameter CLR_DIS = 8'b0000_0100;
parameter CURSOR_MOVEMODE = 8'b0000_1000;
parameter CURSOR_DISMODE = 8'b0001_0000;
parameter WRITE_DATA = 8'b0010_0000;
parameter WRITE_COMMAND = 8'b0100_0000;

initial begin
        action = START_DISMODE;
end

always@(posedge sys_clk)begin
        sys_counter = sys_counter + 1;
        if(sys_counter == 50_000)begin
                sys_counter = 0;
        end
end

always@(posedge sys_clk)begin
        if(sys_counter<25_000)
                lcd_clk = 1;
        else
                lcd_clk = 0;
end

always@(posedge lcd_clk)begin
        case(state)
                START_DISMODE:begin
                        rs <= 0;
                        io_out <= 8'h38;
                        en_sel <= 1;
                        state <= Idel;
                end
                Idel:begin
                        en_sel <= 0;
                        state <= action;
                end
                default:        state <= action;
        endcase
end

always@(posedge lcd_clk)begin
        if(action!=Idel)
                action<=Idel;
end


assign en = en_sel?lcd_clk:1'b0;

endmodule

zxq6 发表于 2013-1-23 21:01:52

撸主,我觉得你不应该一上来就用fpga来玩mcu应该玩的事情。

jlhgold 发表于 2013-1-23 21:14:30

顶LS and 标题不合格!

Fourier00 发表于 2013-1-23 21:45:54

头像Mm不错

lj_swust 发表于 2013-1-24 00:08:55

楼主把FPGA用到MCU的场合去了,你不要一来就贴程序,没人会一句一句看你程序,你最好把问题描述成文字,这样我们好帮你找问题

minchina 发表于 2013-1-24 10:59:38

zxq6 发表于 2013-1-23 21:01 static/image/common/back.gif
撸主,我觉得你不应该一上来就用fpga来玩mcu应该玩的事情。

师兄,该玩儿些什么呢?
我迷茫了

minchina 发表于 2013-1-24 11:00:09

lj_swust 发表于 2013-1-24 00:08 static/image/common/back.gif
楼主把FPGA用到MCU的场合去了,你不要一来就贴程序,没人会一句一句看你程序,你最好把问题描述成文字,这 ...

额,我看那些用文字描述的贴子,后面的那些人都喊贴程序呀~~

minchina 发表于 2013-1-24 11:00:29

Fourier00 发表于 2013-1-23 21:45 static/image/common/back.gif
头像Mm不错

这是我妹妹

minchina 发表于 2013-1-24 11:01:42

jlhgold 发表于 2013-1-23 21:14 static/image/common/back.gif
顶LS and 标题不合格!

额,标题应该怎么写啊~
时间地点人物..?...O(∩_∩)O~

minchina 发表于 2013-1-24 11:41:38

各位大神,initial语句块,只在仿真的时候有用,实际跑板子的时候不用的吗?
为什么有时候我用initiall给某排管脚电压赋值是对的呢?

冰峰 发表于 2013-1-24 22:36:46

FPGA和MCU不一样,你这程序就是MCU的思想。太多不规范的地方,有的if没有else,可能会产生锁存器,还有时钟满天飞。
你要首先了解什么是FPGA

pocker5200 发表于 2013-1-24 23:31:40

minchina 发表于 2013-1-24 11:41 static/image/common/back.gif
各位大神,initial语句块,只在仿真的时候有用,实际跑板子的时候不用的吗?
为什么有时候我用initiall给某 ...

initial语句块是不可综合的,不能生成实际电路。
FPGA作为一种系统级的芯片想当MCU玩也可以,灵活正是FPGA的特色。
不知道撸主用的谁家的芯片,用软核+通用外设IP+C语言1602驱动就和MCU驱动1602没有区别了.

zhaoxin5002 发表于 2013-1-25 01:16:49

感觉你写的太乱了,懒得看都

minchina 发表于 2013-1-25 10:32:05

zhaoxin5002 发表于 2013-1-25 01:16 static/image/common/back.gif
感觉你写的太乱了,懒得看都

额,不好意思,大神,在下FPGA新手,而且注释不能写中文、

minchina 发表于 2013-1-25 10:34:28

pocker5200 发表于 2013-1-24 23:31 static/image/common/back.gif
initial语句块是不可综合的,不能生成实际电路。
FPGA作为一种系统级的芯片想当MCU玩也可以,灵活正是FPG ...

但有时候我发现initial还是有起作用啊

reg init_sel;
initial begin
      init_sel = 0;
end

我后面的语句是对init_sel信号进行判断,以执行设备初始化时序。

init_sel=0时,进行初始化。

我没有添加nitial_sel语句块时,无法进行正常的初始化。
我添加initial语句块,用init_sel = 1或者其他不为0的数,同样无法正常初始化。
只有用init_sel=0时,才能正常初始化、

pocker5200 发表于 2013-1-25 10:57:44

那不是initial语句块起作用,而是综合器默认设置为0,我说的是实际下载到片子里运行的时候。
initial语句只有仿真的时候才用到,想用实际电路跑就得用可综合语句写。

minchina 发表于 2013-1-25 11:15:36

pocker5200 发表于 2013-1-25 10:57 static/image/common/back.gif
那不是initial语句块起作用,而是综合器默认设置为0,我说的是实际下载到片子里运行的时候。
initial语句只 ...

我真是越来越糊涂了....

我也感觉initial应该不会被执行

但是我用1602来显示数值

initial begin
    buffer = 8'h38;               //buffer为写入1602的数据
end

我确实看到1602上显示8、

initial begin
    buffer = 8'h37;               //buffer为写入1602的数据
end

确确实实也看着变为7了、、

pocker5200 发表于 2013-1-25 11:41:39

红字部分相当于,把action改成IDLE……先买一本国外的verilog教材看吧,基础打牢了这些就都不是问题了。

zhaoxin5002 发表于 2013-1-27 17:20:05

给你个忠告:用现成的代码,省下时间写点有意义的。

minchina 发表于 2013-1-27 17:59:49

zhaoxin5002 发表于 2013-1-27 17:20 static/image/common/back.gif
给你个忠告:用现成的代码,省下时间写点有意义的。

写代码不是要多练嘛?

zhaoxin5002 发表于 2013-1-27 18:05:34

minchina 发表于 2013-1-27 17:59 static/image/common/back.gif
写代码不是要多练嘛?

别当死学生,多看点别人代码

minchina 发表于 2013-1-27 18:19:52

zhaoxin5002 发表于 2013-1-27 18:05 static/image/common/back.gif
别当死学生,多看点别人代码

我看啊,但是不自己写的话,始终锻炼不出来属于自己的思维。
别人的最多只能借鉴。

minchina 发表于 2013-1-27 18:52:40

zhaoxin5002 发表于 2013-1-27 18:05 static/image/common/back.gif
别当死学生,多看点别人代码

不形成自己的思维、编程模式,永远都只是新手。多看别人的代码是必要的,我在一楼贴出的代码就是参考别人写的简单状态机(没写全,因为没有必要,问题不是出在那里,删减了)。
代码方面,C语言模式已经根深蒂固在我的思维里面。所以转换为硬件描述语言或许会花点时间。我前些时候已经写好了1602的驱动了,fpga的,自己的。
用自己的驱动,这就是我的风格。

zhaoxin5002 发表于 2013-1-27 19:41:59

minchina 发表于 2013-1-27 18:52 static/image/common/back.gif
不形成自己的思维、编程模式,永远都只是新手。多看别人的代码是必要的,我在一楼贴出的代码就是参考别人 ...

学习的目的不是跑来锻炼思维来了,最终目的还是把知识转为效益,毕竟我们只涉及应用层面。永远记得务实,像驱动1602这种能事还要形成思维也就能出现在课堂上,你看看当初教过你的教授们,一辈子的教学成果也打不进市场。有这时间还不如去论坛下几个完整的案例好好研究研究。


代码写不完,有成型的尽量用成型的,闭门造车出门不合辙,多看看大师级写的程序,另外如果不是很高端,执行效率都是次要的。

minchina 发表于 2013-1-27 19:59:43

zhaoxin5002 发表于 2013-1-27 19:41 static/image/common/back.gif
学习的目的不是跑来锻炼思维来了,最终目的还是把知识转为效益,毕竟我们只涉及应用层面。永远记得务实, ...

什么叫做了一辈子的科研,也进不了市场哦?

很多教授年轻的时候都在市场混过,比如我的导师,以前开过公司,研究所,老了过后才来学校养老的。

既然你都知道是学习了,那就是为了锻炼思维!

做项目才是为了应用!

1602是很简单,但是FPGA不简单,我是了解FPGA的思维,不是了解1602的思维。

什么是有现成就用现成的哦,如果是这样的话,于振南为什么还要写znfat,明明都已经有fatfs了。

谁说要闭门造车?

是观之,在取之精华,融入自己的思维。我开发arm的时候,就算是做大项目,我也很少会移植ucos之类的。我多半都是自己写状态机,或者是用我自己写的os,执行效率还更高些。

案例我有的是,基础没打牢,还不敢吃太快。所谓走还没学会,就想学跑了。

这就像是C语言都还没学好,就想学ARM了。

出现看不懂的情况只会更多。

zhaoxin5002 发表于 2013-1-27 20:18:11

淡定,我只是觉得你在已成熟的东西上再耗时间优化不必要(除非精仪航天)。这个行业太深了,你永远学不完。如果你只相当程序员的话另当别论


有现成就用现成,最后的目的是应用,你也不可能精通

minchina 发表于 2013-1-27 20:51:30

zhaoxin5002 发表于 2013-1-27 20:18 static/image/common/back.gif
淡定,我只是觉得你在已成熟的东西上再耗时间优化不必要(除非精仪航天)。这个行业太深了,你永远学不完。 ...

~我还只是个学生而已、有必要打牢基础、

zhaoxin5002 发表于 2013-1-27 21:08:55

minchina 发表于 2013-1-27 20:51 static/image/common/back.gif
~我还只是个学生而已、有必要打牢基础、

我也是自动化过来人,听我的吧务实些,其实你说的很多都是我以前的误区,当时我也不明白,别人怎么说也觉得他们不对,现在想想 跟你讲你也不会听。很多事儿必须亲身经历才肯相信,还得自己悟,毕业了你就全清楚了,看好你

steven0419 发表于 2013-1-31 15:43:09

建议还是先多看点资料吧,不急着上手,你还年轻,时间还很多!

lsy-forever 发表于 2013-2-2 15:16:38

楼主我没看懂,在没个lcd_clk的时候,action都被清成idel,那么在状态机里,同样的时钟控制,又如何进得了startdis呢?所有的Always都是并行的吧,那第一个lcd_clk来了,不管action初始化成什么样,都被清成idel,然后状态机是不是就进idel吧idel传给state,那就永远是idel了……请楼主明示,我也不太懂

kclc 发表于 2013-2-2 15:31:49

LZ 把FPGA当MCU写了
页: [1]
查看完整版本: 接触FPGA不久,新人求助。