EETOP 创芯网论坛 (原名:电子顶级开发网)
标题: 初学者请教一下 [打印本页]
作者: 岁月永恒 时间: 2012-6-20 10:14
标题: 初学者请教一下
你好,
我是verilog的初学者,看过几本verilog的书籍,对里面简单的例子已经非常熟悉。由于一直对arm比较感兴趣,前几天在论坛看到这本书,非常喜欢,就买了一本,可是学习起来后发现理论知识和实践还相差甚远。
在uart的例子中,每句话、每个always块是什么意思肯定是明白的。但对于时序很吃力的可以看个大概,且各个always快相互影响、相互制约有点看不太明白。如果自己动手写肯定还差很多。我想后面arm的源码肯定是看不明白了。
想跟您请教一下,对于我现在这种学习水平,怎样才能提高verilog水平,需要从哪开始着手进行练习。
谢谢~
作者: free-arm 时间: 2012-6-20 10:36
Hi, 你好。
Verilog RTL的规则很简单,一般来说就如同书中所说的三种形式:assign语句,always逻辑赋值语句和always时序赋值语句。后面我们要做的是采用这三种形式来达到某种目的。
你先确认你理解这三种赋值语句的意义。每个语句会得到一个啥样的输出结果,这个必须清楚。一般来说,always时序赋值语句的给值,在下一个时钟沿后生效。其他两个赋值语句会立即生效,这个搞清楚了,后面的任务就是利用这种规则达到自己的目的。
你现在还没有习惯采用这三种赋值语句达到自己的目的,因此也就不理解别人为什么要这么做,来达成某个目的。你可以先仿真琢磨琢磨,也可以仿真一些简单的RTL任务来理解这三种语句搭配的效果。
先给你出个题目吧:
- module test (
- clk,
- rst,
- a,
-
- x
- );
- endmodule
复制代码 其中a只有在出现连续四个高电平的情况下,x输出一个周期的高电平。你先写写看,看看自己如何运用规则来完成自己的目的。
作者: free-arm 时间: 2012-6-20 10:44
Verilog RTL的规则简单,我们只需掌握这个规则,照章行事,一点点的熟练起来,即可写出漂亮的RTL出来。当然,可能刚开始错漏百出,不过没关系,重要的开始,慢慢的积累经验,积累对RTL的掌控力,那么写出处理器内核也只不过是手熟而已。
作者: 岁月永恒 时间: 2012-6-20 12:40
回复 3# free-arm
非常感谢您的答复,对于您跟才给出的小test,我写了一下,望批评指正。
-
- `timescale 1ns/10ps
- module test(clk,rst_n,a,x);
- input clk;
- input rst_n;
- input a;
- output x;
- reg [2:0] cnt;
- always@(posedge clk or negedge rst_n)begin
- if(~rst_n)
- cnt <= #1 3'b0;
- else if(a)
- cnt <= #1 cnt + 1;
- else if(cnt==3'd5)
- cnt <= #1 3'b0;
- else
- cnt <= #1 3'b0;
- end
- assign x = (cnt==3'd5)? 1 : 0;
- endmodule
复制代码
-
- `timescale 1ns/10ps
- module tb_test();
- reg clk=0;
- reg rst_n=0;
- reg a=0;
-
- wire x;
- always clk = #10 ~clk;
- initial #50 rst_n=1;
- initial begin
- #75 a=1;
- #100 a=0;
- #50 a=1;
- #30 a=0;
- #100 $finish;
- end
-
- test U1(.clk(clk),
- .rst_n(rst_n),
- .a(a),
- .x(x)
- );
- initial begin
- $fsdbDumpfile("dump.fsdb");
- $fsdbDumpvars();
- end
- endmodule
复制代码
( , 下载次数:
129 )
作者: free-arm 时间: 2012-6-20 13:46
回复 4# 岁月永恒
非常不错,就是这么个意思。在这里,你的设计中检验5个时钟沿。
建议你购置一块FPGA开发板,慢慢的从点亮LED灯开始,到不断使用各种IP来完善设计。你有了开发板,你就有责任来独立做一些事情,那么这种责任会让你成长。
不过不建议你放弃,很多事情都是勉为其难才成功的。不是很多事情都是恰到好处,难做的事情克服一下,就是另外一番洞天了。
作者: 岁月永恒 时间: 2012-6-20 14:13
回复 5# free-arm
嗯,好的,谢谢您~
作者: jm2000 时间: 2012-6-21 15:32
感谢free-arm,给初学者指出一条道路;
作者: free-arm 时间: 2012-6-21 17:31
回复 7# jm2000
不敢当。Verilog RTL是如此简单而高效的编程方式,希望更多人爱上它,并作出成绩来。
作者: mnp55 时间: 2019-7-19 01:59
Tank you
欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) |
Powered by Discuz! X3.5 |