interig 发表于 2010-6-28 00:11:48

verilog8位数的串入并出 代码

吐血求 verilog8位数的串入并出 代码<br>
急需啊 达人给指导下吧

HANG 发表于 2010-6-28 01:48:28

大家来瞧瞧吧 没时间拉<br>
偶的学分呀
        http://bbs.vibesic.com/images/smilies/default/mad.gif

        http://bbs.vibesic.com/images/smilies/default/mad.gif

AAT 发表于 2010-6-28 02:47:47

呵呵,来瞧瞧,可我没有!

VVC 发表于 2010-6-28 04:07:56

我想串入并出该是这样的:有一个&nbsp;&nbsp;输入量,然后通过左移运算或者拼接&nbsp;&nbsp;把它的值一次次地赋给&nbsp;&nbsp;reg的最后一位,八次搞完后就把reg的值输出就OK了。

CHANG 发表于 2010-6-28 05:44:19

我是这样写的,不知道对不对?麻烦大家看看,谢谢!

//Serial to Parral
//size = 8

module S2P(clk,in,out,flag);
    input clk;
    input in;
    output out;
    reg out;
    output flag;
    reg flag;
   
    integer count;
    reg temp;
    //count = 0;
    initial
      begin
      count = 0;
      temp &lt;= 0;
      temp &lt;= 0;
      temp &lt;= 0;
      temp &lt;= 0;
      temp &lt;= 0;
      temp &lt;= 0;
      temp &lt;= 0;
      temp &lt;= 0;
      end
    always @(posedge clk)
            begin
                //begin
                temp &lt;= temp;
                temp &lt;= temp;
                temp &lt;= temp;
                temp &lt;= temp;
                temp &lt;= temp;
                temp &lt;= temp;
                temp &lt;= temp;
                temp &lt;= in;
                //temp &lt;&lt; in;
                count = count + 1;
                //end
               
                if(count == 8)
                  begin
                  flag &lt;= 1;
                  count = 0;
                  end
                else
                  flag &lt;= 0;
               
                if(flag == 1)
                  begin
                  out &lt;= temp;
                  out &lt;= temp;
                  out &lt;= temp;
                  out &lt;= temp;
                  out &lt;= temp;
                  out &lt;= temp;
                  out &lt;= temp;
                  out &lt;= temp;
                  end
            end
endmodule

longtime 发表于 2010-6-28 06:37:40

我新手笔,这是我想法,不知道对不对<br>
<br>
将串行数据一次付给并行data到data,每付完一次,串行数据移一位,就可以了吧<br>

        http://bbs.vibesic.com/images/smilies/default/biggrin.gif

HDL 发表于 2010-6-28 08:36:46

看一下这个,应该有用<br>
<br>
<br>
module tb_transform; <br>
<br>
wire clk, rst, sp, Ds;<br>
wire Dp;<br>
<br>
test_signal test (clk, rst, sp, Ds, Dp);<br>
transform transform (clk, rst, sp, Ds, Dp);<br>
&nbsp;&nbsp;<br>
endmodule <br>
<br>
<br>
<br>
<br>
<br>
<br>
module transform (clk, rst, sp, Ds, Dp);<br>
inout Ds;<br>
inout Dp;<br>
input clk, rst, sp;<br>
<br>
reg Dst,sign;<br>
reg Dpt;<br>
reg counter1, counter2;<br>
<br>
assign Ds=sp?1'bz
        http://bbs.vibesic.com/images/smilies/default/biggrin.gif
st;<br>
assign Dp=!sp?8'bz
        http://bbs.vibesic.com/images/smilies/default/biggrin.gif
pt;&nbsp;&nbsp;<br>
<br>
always @ (posedge clk or negedge rst)<br>
&nbsp; &nbsp; &nbsp; &nbsp; if(!rst)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; //寄存器初始化<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; begin<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Dpt&lt;=0;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Dst&lt;=0;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sign&lt;=1;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; counter1&lt;=0;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; counter2&lt;=0;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end<br>
&nbsp; &nbsp; &nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; if(sp&amp;&amp;(counter1&lt;=7))//串转并<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; begin<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; Dpt&lt;=Ds;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//将串型输入赋给临时并型寄存器的最低位<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; Dpt&lt;=Dpt;&nbsp; &nbsp;//临时并型寄存器的低7位向左移一位。<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; counter1&lt;=counter1+1;<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; end<br>
&nbsp; &nbsp; &nbsp; &nbsp; else if(!sp&amp;&amp;sign)&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//先于转换,将并型输入信号暂存到dpt中,并将sign赋0,以防反复向dpt赋值。<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; begin<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; Dpt&lt;=Dp;<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; sign&lt;=0;<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; end<br>
&nbsp; &nbsp; &nbsp; &nbsp; else if(!sp&amp;&amp;(counter2&lt;=7))//并转串<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; begin&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; <br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Dpt&lt;=Dpt;&nbsp;&nbsp;//临时并型寄存器的低7位向左移一位。<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Dst&lt;=Dpt;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//把最高位赋给输出。<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; counter2&lt;=counter2+1;<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; end&nbsp; &nbsp;<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br>
endmodule

ngtim 发表于 2010-6-28 10:08:59

module wyp_8(dir,rdn,cp,q);<br>
input&nbsp; &nbsp;&nbsp; &nbsp; dir,rdn,cp;<br>
output q;<br>
reg&nbsp; &nbsp; q;<br>
always@(negedge cp or negedge rdn)<br>
begin<br>
&nbsp;&nbsp;if(~rdn)&nbsp;&nbsp;q=0;<br>
&nbsp;&nbsp;else begin q=q&gt;&gt;1;q=dir;end<br>
end<br>
endmodule

encounter 发表于 2010-6-28 10:22:38

这是我写的,呵呵<br>
<br>
/*&nbsp; &nbsp;=========== 串-并转换 ===============&nbsp;&nbsp;*/<br>
<br>
module s_p(bits,clk,data_out);<br>
<br>
input clk,bits;<br>
output data_out;<br>
<br>
reg state;<br>
reg data_out;<br>
<br>
<br>
parameter bit1=8'00000001,&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;//独热码定义状态机<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; bit2=8'00000010,<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;bit3=8'00000100,<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;bit4=8'00001000,<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;bit5=8'00010000,<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;bit6=8'00100000,<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;bit7=8'01000000,<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;bit8=8'10000000;<br>
<br>
always @(posedge clk or negedge reset) begin&nbsp; &nbsp; //主程序开始<br>
&nbsp;&nbsp;if(~reset) state=bit1;<br>
&nbsp;&nbsp;<br>
&nbsp; &nbsp;else<br>
&nbsp; &nbsp;&nbsp;&nbsp;case(state)<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; bit1: begin<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;data_out=bits;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;state=(state&lt;&lt;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; end<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; bit2: begin<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;data_out=bits;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;state=(state&lt;&lt;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; end<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; bit3: begin<br>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;data_out=bits;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;state=(state&lt;&lt;1);<br>
&nbsp; &nbsp;&nbsp; &nbsp; end<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp; bit4: begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;data_out=bits;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;state=(state&lt;&lt;1);<br>
&nbsp; &nbsp;&nbsp; &nbsp; end<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp; bit5: begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;data_out=bits;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;state=(state&lt;&lt;1);<br>
&nbsp; &nbsp;&nbsp; &nbsp; end<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp; bit6: begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; data_out=bits;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; state=(state&lt;&lt;1);<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;end<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp; bit7: begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; data_out=bits;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; state=(state&lt;&lt;1);<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;end<br>
&nbsp; &nbsp;&nbsp; &nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp; bit8:begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; data_out=bits;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; state=(state&lt;&lt;1);<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;end<br>
&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp; default:<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; state=bit1;<br>
&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp;&nbsp;endcase&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;<br>
end<br>
<br>
endmodule
页: [1]
查看完整版本: verilog8位数的串入并出 代码