在Verilog中可以采用多种方法来描述有限状态机最常见的方法就是用always和case语句.如下图所示的状态转移图就表示了一个简单的有限状态机: 图中:图表示了一个四状态的状态机,输入为A和Reset,同步时钟为clk,输出信号是K1和K2,状态机只能在信号的上升沿发生.  (A)下面是可综合的Verilog模块设计状态机的典型方法:(格雷码表示状态) module fsm(A,Reset,K2,K1,clk,state); input A,Reset,clk; output K2,K1;…
Part 1,功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计.由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出.写入和读出的操作(高电平有效)由时钟的上升沿触发.当FIFO的数据满和空的时候分别设置相应的高电平加以指示.FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成…
先以一位全加器为例:Xi.Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号.列表有:   Xi     Yi    Cin Sum Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 由左边表格可知: Sum=X’Y'Cin+X'YCin'+XY'Cin'+XYCin=X'(Y⊕Cin)+X(Y⊙Cin)=X'(Y⊕Cin)+X(Y⊕Cin)'=X⊕Y⊕Cin…
在分频器电路中最重要的概念有两个:1)奇分频/偶分频:2)占空比. A)其中最简单的就是二分频电路,占空比为50%,其Verilog程序为 module half_clk(clr,clk_in,clk_out,out2); input clr,clk_in; output clk_out,out2; reg clk_out,out2; always @(posedge clk_in) begin ) ; out2=;end else begin clk_out<=~clk_out; out2=~…
这里采用夏宇闻教授第十五章的序列检测为例来学习; 从以上的状态转换图可以写出状态机的程序: module seqdet(x,out,clk,rst); input x,clk,rst; output out; :]state; wire out; 'b0, A='d1, B='d2, C='d3, D='d4, E='d5, F='d6, G='d7; )?:; always @(posedge clk or negedge rst) begin if(!rst) state=IDLE; els…
module D_flop(data,clk,clr,q,qb); input data,clk,clr; output q,qb; wire a,b,c,d,e,f,ndata,nclk; nand nand1(a,clr,data,clk), nand2(b,ndata,clk), nand4(d,c,b,clr), nand5(e,c,nclk), nand6(f,d,nclk), nand8(qb,f,clr,q); nand nand3(c,a,d), nand7(q,e,qb); n…
基本原理:       1.读写指针的工作原理 写指针:总是指向下一个将要被写入的单元,复位时,指向第1个单元(编号为0). 读指针:总是指向当前要被读出的数据,复位时,指向第1个单元(编号为0).      2.FIFO的"空"/"满"检测 FIFO设计的关键:产生可靠的FIFO读写指针和生成FIFO"空"/"满"状态标志. 当读写指针相等时,表明FIFO为空,这种情况发生在复位操作时,或者当读指针读出FIFO中最后一个字后…
这里以简单的3-8译码器和8-3编码器为例: module decoder3_8(a,out); :]a; :]out; 'b1<<a;/*把最低位的1左移in位(根据in口输入的值)并赋予out*/ endmodule 8-3编码器程序: 1)利用for循环 module encoder8_3(a,out,none_on); :]a; :]out; output none_on; :]out; reg none_on; //要在always块中赋值,必须为reg型数据 always @(a)…
利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integrated circuit)双向二线制串行总线协议为:只有总线处于"非忙"状态时,数据传输才开始.在数据传输期间,只要时钟线为高电平,数据线都必须保持稳定,否则数据线上的任何变化都被当作"启动"或"停止"信号. 下面介绍A.B.C.D的工作状态: (1)…
IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试 目的不是为了编写TSC2007驱动,是为了学习IIC驱动的编写,读一下TSC2007的ADC数据进行练习,, Linux主机驱动和外设驱动分离思想 外设驱动→API→主机驱动→板级逻辑--具体的i2c设备(camera,ts,eeprom等等) 主机驱动:根据控制器硬件手册,配置SOC的I2C寄存器产生波形,这个不在我的研究范围之内 linux应用工程师不需要驱动和硬件的细节. linux驱动工程师:不需要考虑硬件!由BSP工程师提…