用verilog写了个状态机,实现ad采集的时序控制。给出convst后,检测busy,要是为低,就拉低RD,读出数据
状态机,首先是默认状态(st0或者直接是s1),然后是序列1状态(st1),和1101比较,对的话调到序列2状态,错误的话还是st1;st2的时候如果数据是0011,进入st3,错误的话,看看是不是1101,如果是的话还是保持在st2,如果不是回到st1;后面依次类推,对的进入下一状态,错的话和序列1的数据比较,看看是停在st2还是st1;
说的明白点。比方说定义个状态机state next _tate;输入a,输出b, 如果这样写:
always@(posedge clk)
case (state )
0:next_state<=1;
1:next_state<=x; 也就是说与输入a没有任何关系,状态的装换,这是看当前是什么状态 ,这种称为moore型状态机
如果是这样子的 :
always@(posedge clk)
case (state )
0: if (a==0)next_state<=1; else next_state<=x;
1:next_state<=x;
状态转换与输入a有关,这种称为mealy型状态机
1、第二行“nest_states”命名错误。
2、状态机的迁移最好加上复位,如下:
always @ (posedge clk or negedge rst)
if (!rst)
state <= IDLE;
else
state <= next_state;
3、状态机的第二段可以采用组合逻辑写,always(*)是可以的,但是严禁在同一个组合逻辑always模块里同时出现<= 和=,改成都用=。
4、硬件描述语言,最好用1'b1,1'b0把位宽也描述上而不要用直接用1,0。
可以做个测试信号 将busy的输入再从另外的管脚输出 做一个直通 看看输出状态 没准是fpga的管脚坏了
用verilog写的一个十六位运算器,编译报错
module pb06(a,b,s,m,sel,gnd,f,vcc);input [15:0] a,b;input [3:0] s;input gnd,vcc;input m,sel;output [15:0] f;wire [3:0] pn,gn;wire [2:0]cn4;wire [3:1]c;wire [4:1]y;\\74181 t181a(s[3],s[2],s[1],s[0],m,vcc,a[3],a[2],a[1],a[0],...
如何看懂别人写的verilog 代码
读懂一个Verilog工程代码主要通过以下方面:1、区分好结构,一个工程是由基本的顶层、模块、约束等部分组成的,通常模块都是在顶层中逐一实例化,所以,了解一个工程的结构就是从顶层逐一向下延伸,相当于植物的根系,最底层的模块往往是被“引用”最多的,也是最基础的构成。2、通过代码注释来辅助阅读,...
如何看懂别人写的verilog 代码
读懂一个Verilog工程代码主要通过以下方面:1、区分好结构,一个工程是由基本的顶层、模块、约束等部分组成的,通常模块都是在顶层中逐一实例化,所以,了解一个工程的结构就是从顶层逐一向下延伸,相当于植物的根系,最底层的模块往往是被“引用”最多的,也是最基础的构成。2、通过代码注释来辅助阅读,...
用verilog 写一个 将十六进制数转换十进制数的程序 和将 十进制数转换...
十六进制-->十进制:其实就是十六进制-->BCD,可参考http:\/\/wenku.baidu.com\/view\/313907020740be1e650e9a3d.html 我写的代码:module Bin2BCD16(A, B);input [15:0] A;output [19:0] B;wire [3:0] c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13;wire [3:0...
Verilog循环语句
在Verilog HDL中存在着四种类型的循环语句,用来控制执行语句的执行次数。其语法和用途与C语言很类似 forever语句的格式如下:forever循环语句常用于产生周期性的波形,用来作为仿真测试信号。它与always语句不同处在于不能独立写在程序中,而必须写在initial块中。forever循环的应用示例如下:repeat语句的格式...
专利能把verilog代码写上去吗
可以。软件专利主要保护方法,为了更清楚的解释权利要求书,可以在说明书中写入代码片段。如何写好Verilog代码?1、有Verilog好的语法基础和代码习惯,如注释、格式对称、能全拼不简写等等;2、有好的数字电路基础,对于所写代码预计综合出来的电路有了解,从电路到描述或者从描述到电路多加斟酌;3、对将要...
对verilog的 仿真和综合有什么区别,具体一点
╮(╯▽╰)╭为什么总是纠结在这些上面呢。1。所谓功能仿真,就是你的code写完之后,你要实现的功能是否能work,比如你写一个计数器,让他计数到10,翻转,同时清零,重新计数,这就会是一个分频电路。那么功能仿真就是要验证你这个功能是否是正确的,别tmd计数到9就翻了,或者计数到10没有清0。功能...
用verilog语言编写cmos与非门和或非门电路的代码
module nand(a,b,zn);\/\/module名称、端口 input a,b;\/\/输入端口 ouput zn;\/\/输出端口 wire zn;\/\/输出端口类型 assign zn=!(a&&b);\/\/逻辑:非!与&& endmodule 这是与非 或非仿写就行了 多看看语法
verilog,有reg[24:0] cnt, 后面写if(cnt==24‘hffffff)啥意思?_百度...
reg[24:0] cnt,定义一个名字叫做cnt的寄存器,它是一个25bits的信号。if(cnt==24‘hffffff)是一个判断语句,判断cnt这个寄存器的数值是不是24’hffffff(这是一个16进制的表示方法),这个等于10进制的16777215。
verilog程序:晶振40M,检测输入信号的上升沿start, 输出时间为1ms的高...
OutPutSigTemp<=1'b1;else OutPutSigTemp<=1'b0;end end assign OutPutSig=OutPutSigTemp;\/***\/ endmodule \/\/自己再调试一下,我只是写出来了,没有调试,但是大体框架是对的。可能会修改较小的地方。
比常法莫: 状态机,首先是默认状态(st0或者直接是s1),然后是序列1状态(st1),和1101比较,对的话调到序列2状态,错误的话还是st1;st2的时候如果数据是0011,进入st3,错误的话,看看是不是1101,如果是的话还是保持在st2,如果不是回到st1;后面依次类推,对的进入下一状态,错的话和序列1的数据比较,看看是停在st2还是st1;
昌宁县19218367439: 求大神用verilog模块编写一个状态机的程序 - ?
比常法莫: parameter IDLE = 3'h0; parameter CS1 = 3'h1; parameter CS2 = 3'h2;reg [2:0] cs, ns; reg cs_out1, cs_out2; always @(posedge clk or negedge rstn) beginif (~rstn) cs <= IDLE;else cs <= ns; endalways @(*) beginns = cs;cs1_out = 1'b0;cs2_...
昌宁县19218367439: 设计一个状态机,我用Verilog语言编写的程序如下: 但编译不了,有哪些错误啊,求高手指教 - ?
比常法莫: 大致看了下,具体的没细看,你这里面有很明显的错误就是,你的状态机里面用的是阻塞赋值,尝试非阻塞赋值看看,那样应该就没什么问题了,即将“=”改为“
昌宁县19218367439: 如何用verilog设计有限状态机 - ?
比常法莫: 在用Verilog描述有限状态机时,有下面几种描述方式: (1)三段式描述:即现态(CS)、 次态(NS)、 输出逻辑(OL)各用一个always过程描述. (2)两段式描述(CS+NS、OL双过程描述):使用两个always过程来描述有限状态机,一个过程...
昌宁县19218367439: 用verilog写了个状态机,实现ad采集的时序控制.给出convst后,检测busy,要是为低,就拉低RD,读出数据 - ?
比常法莫: 4个建议:1、第二行“nest_states”命名错误.2、状态机的迁移最好加上复位,如下:always @ (posedge clk or negedge rst) if (!rst) stateelse state 3、状态机的第二段可以采用组合逻辑写,always(*)是可以的,但是严禁在同一个组合逻辑always模块里同时出现4、硬件描述语言,最好用1'b1,1'b0把位宽也描述上而不要用直接用1,0.
昌宁县19218367439: 关于verilog 状态机的编写(由状态图来写状态机) - ?
比常法莫: 用一个合适位宽的reg作为状态机; 工作时每个原状态都是一个case分支; 状态转移用case分支里面的if else写; 转移的次态是if else里面的结果.
昌宁县19218367439: 在用verilog编写三段式状态机的时候,我看网上很多地方都是提到格式如下:always @ (posedge clk or negedg - ?
比常法莫: 1.第二段如果用时序逻辑,会导致你的状态机对输入条件的引起的变化多延迟一拍. 2.CS比NS慢一拍,如果用CS,你的o1,o2都会晚一拍.
昌宁县19218367439: 如何写好Verilog状态机 - ?
比常法莫: 状态机描述主要有以下几个方面,即如何进行状态转移,状态转移的条件,每个状态的输出是什么;而最佳的状态机就是将三者分开,由组合逻辑和非组合逻辑搭配组成,这样程序易读,易维护,同时方便添加约束条件.第一段状态,时序电路...
昌宁县19218367439: Verilog中Initial语句只能用于对测试模块的描述,为什么? - ?
比常法莫: verilog描述的是硬件电路.所以initial语句只能用在仿真时测试平台testbench中.可以使用状态机来描述你说的功能. 初学者两天可以搞定,具体步骤如下: 1.根据功能画出状态转换图 2.参考状态机写法,将你的图用verilog实现 3.按要求编写仿真平台testbench 4.状态机和测试平台编译通过后使用quartus或ISE调用modelsim仿真 5.仿真通过,设计完成
昌宁县19218367439: 简单的verilog的状态机 空调的状态机.有两个输入t - high和t - low,连着温度传感器,温 - ?
比常法莫: 这个不是状态机啊,直接拿传感器的数据和18还有23比较,然后判断输出就可以了啊,要状态机干嘛...