verilog代码,谁能看懂,貌似挺常用的?

问题描述

verilog代码,谁能看懂,貌似挺常用的?

always@(posedge clk_out_0, negedge reset_n) begin
if(reset_n == 1'b0)
current_state <= idle;
else
current_state <= next_state;
end

always@(*) begin
next_state = current_state;
case(current_state)
idle:begin
if(flaga == 1'b1)
next_state = read;
else
next_state = idle;
end
read:begin
if(flaga == 1'b0)
next_state = idle;
else
next_state = read;
end
default:
next_state = idle;
end

解决方案

已经懂了,这是典型的三段式状态机,具体的可以去百度,帖子就这样结了,此外给二楼点辛苦分把,诶,好像不行啊,

解决方案二:

always@(posedge clk_out_0, negedge reset_n) begin //循环,一旦clk_out_0有上升沿或reset_n下降沿就使用begin下语句
//下降沿:变到0
//上升沿:变到1
if(reset_n == 1'b0) //判断 reset_n==一个单位的 0
current_state <= idle; //不等待把 current_state=idle
//=直接赋值
//<=不等待赋值
// a=b;b=c;c=d;顺序是从a到c
//a<=b;b<=c;c<=d;不知顺序,因为哪个先都是不知
else
current_state <= next_state; //从这知道他是状态的,每个状态一个,是摩尔类(不在意我说的这个,这个没关系)
end //停,不是停下程序,是循环,就是结束循环

always@(*) begin //有变化,循环
next_state = current_state; //把这个状态放下状态,这个是逆循环
case(current_state) //分支,判断一个值如果是idle还是read
idle:begin
if(flaga == 1'b1) //判断
next_state = read; //next_state = read;

else
next_state = idle;
end
read:begin
if(flaga == 1'b0)
next_state = idle;
else
next_state = read;
end
default:
next_state = idle;
end //结束

解决方案三:

意思是懂,但是不太了解这两个always块在这的意义,有什么用?我也仿真了图像,感觉这两个always块完全没必要。

解决方案四:

为了方便看,此处附代码图片,另一张是仿真图片

解决方案五:

帖子貌似要沉了,我说以下我目前的想法把:这里next _ state是电平触发变化很及时,它是随着flag同步变化的,而current _ state是在下一个时钟的上升沿的时候发生变化,因此current _ state会比next _ state延时一个时钟或一个时钟以内(具体看flag是什么时候变化的)。也就是说,设立这俩模块的的目的是为了做一个延时。但是问题很明显了,如果没有next _ state效果可以是一样的。(这是一个官方的datasheet中的一段程序,应该不会是没用的。)

时间: 2024-10-18 00:39:36

verilog代码,谁能看懂,貌似挺常用的?的相关文章

C#实现窗口抖动的一段代码,没看懂,求指教

问题描述 C#实现窗口抖动的一段代码,没看懂,求指教 int i, j, k; //定义三个变量 for (i = 1; i <= 3; i++) //循环次数 { for (j = 1; j <= 10; j++) { this.Top += 1; this.Left += 1; System.Threading.Thread.Sleep(3); //当前线程指定挂起的时间 } for (k = 1; k <= 10; k++) { this.Top -= 1; this.Left -

这种js代码怎么能够看懂

问题描述 这种js代码怎么能够看懂 eval(function (p, a, c, k, e, d) { e = function (c) { return (c < a ? "" : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) d[e(c)] = k

对象-java 抽象类有段代码没看懂!!!帮忙解释下

问题描述 java 抽象类有段代码没看懂!!!帮忙解释下 自己看视频自学到网络编程,发现下边的代码看不懂,自己也百度了很多,还是没理解好抽象类 OutputStream os=Socket.getOutputSteam(); os.write("加油".getBytes()): 这段代码没看懂,OutputStream抽象类不能直接创建对象,也没有子类去实现,为什么可以直接调用write(byte[] b) 方法? 解决方案 不能创建对象的意思是不能通过new outputstream

java-如何才能看懂别人写的位运算代码?

问题描述 如何才能看懂别人写的位运算代码? import java.awt.Color; import java.awt.Image; import java.awt.image.BufferedImage; import java.awt.image.PixelGrabber; /** * 我知道位运算是什么,怎么运算的,但我实在看不懂别人写的位运算代码,求高人指点我如何才能看懂别人写的位运算代码? * * 希望能得到详细的回答,除了将这个类的所有位运算都解释一遍,还请将位运算在java图像处

这段代码检测浏览器Cookie是否打开,效果很好,可愣是没看懂

问题描述 下面一段代码是检测浏览器Cookie是否打开,测试了IE6,IE7,Firefox3,safari, Opera9.5,测试结果都很正确,可就是没看懂?function getCookieStatus() { var status ="Cookie关闭"; var cookieStr = "wb_check=kcehc_bw"; document.cookie = cookieStr; if (document.cookie.indexOf(cookieS

callback(data)-javascript代码,从request取到callback值之后,有段代码没看懂,请大神指导。

问题描述 javascript代码,从request取到callback值之后,有段代码没看懂,请大神指导. if('${callback}' != ''){ var callback = eval('window.opener.${callback}'); callback(data); } 非常疑惑,为什么可以执行callback(data);这段代码没看懂啊. 解决方案 callback 是一个方法吧,你找找看

numpy-大家谁能看懂这段代码?python数据分析的,求赐教!谢谢

问题描述 大家谁能看懂这段代码?python数据分析的,求赐教!谢谢 1.lines = [line.split('t') for line in open('路径/a.txt')] 2.# file colums 3.num=len(lines[0]) 4.# file rows 5.n=len(lines) 6.df = [[float(x) for x in line] for line in lines[1:]] 7.result=[] 8.import numpy 9.npdata=n

javascript-如何看懂这段js生成类的代码?

问题描述 如何看懂这段js生成类的代码? 特别是那句this.init.apply,本来的应用上下文就是this,为什么要加上apply?还有为什么不直接new klass,而是嵌套了一个class函数?希望能完整的解释下,谢谢! 解决方案 http://www.cnblogs.com/ljchow/archive/2010/06/08/1753526.htmlhttp://2660311.blog.51cto.com/2650311/1358226/http://wenku.baidu.com

编程语言学习-不会的题目不能看懂后独立写出代码

问题描述 不会的题目不能看懂后独立写出代码 不会的题目看懂答案代码后自己还是写不出来,是不是理解的还不够透彻,怎么办呢?是不是多看几遍直至自己能独立写出代码? 解决方案 实践少了,多动手,多参考别人的代码