german010 发表于 2012-11-7 08:43:24

verilog如何实现串行接收8位数据转换为16位,下面这样是否....

verilog如何实现串行接收8位数据转换为16位, 总是逃脱不了在一个时钟周期啊?
reg data;
always @(posedge clk or posedge uart_data_com)
   if(Quart_data_com)
         begin
            data<=data<<4'd8;
               data <=uart_data_com
          end
这样不行吧,如何实现新接收的数据在data的最低8位,然后 原来的数据顺序左移?
            

DepravedLucien 发表于 2012-11-7 14:21:35

data <= {data,uart_data_com};

german010 发表于 2012-11-7 16:10:52

DepravedLucien 发表于 2012-11-7 14:21 static/image/common/back.gif
data

一个时钟周期内可以正确完成此操作吗 ?

sky5566 发表于 2012-11-7 17:35:21

german010 发表于 2012-11-7 16:10 static/image/common/back.gif
一个时钟周期内可以正确完成此操作吗 ?

你的程序寫錯了{:huffy:}

DepravedLucien 发表于 2012-11-7 19:05:11

sky5566 发表于 2012-11-7 17:35 static/image/common/back.gif
你的程序寫錯了

左移啊!错了么?

哪里啊?

DepravedLucien 发表于 2012-11-7 19:06:20

german010 发表于 2012-11-7 16:10 static/image/common/back.gif
一个时钟周期内可以正确完成此操作吗 ?

可以啊 ,不是你想的那样顺序操作的   如果你是这样想的话呵呵

DepravedLucien 发表于 2012-11-7 19:06:43

sky5566 发表于 2012-11-7 17:35 static/image/common/back.gif
你的程序寫錯了

看错了我以为你在回复我呢

fxyzhqr 发表于 2012-11-8 10:13:08

你这个事非阻塞的吧,弄个阻塞的试试

Fourier00 发表于 2012-11-16 18:27:41

做一个二分频,然后拼位宽

Fourier00 发表于 2012-11-16 21:42:41

module bit8tobit16
(
        input            clk    ,
        input            rst_n,
        input       dat_in ,
        output reg dat_out,
    output             vld_out
);
reg       div2_reg;
reg dat_reg ;
always @(posedge clk or negedge rst_n)
begin
        if(rst_n == 1'b0)
                div2_reg <= 1'd0;
        else
                div2_reg <= ~div2_reg;
end

always @(posedge clk or negedge rst_n)
begin
        if(rst_n == 1'b0)
                dat_reg <= 8'd0;
        else
                dat_reg <= dat_in;
end

always @(posedge clk or negedge rst_n)
begin
        if(rst_n == 1'b0)
                dat_out <= 16'd0;
        else
                dat_out <= {dat_reg,dat_in};
end
assign vld_out = div_2reg;
endmodule

german010 发表于 2012-11-17 09:30:42

按着fxyzhqr坛友的建议,
我用 阻塞了,效果还好,然后直接解析

stoppeddream 发表于 2012-11-20 22:16:13

加个fifo不行么

german010 发表于 2012-11-21 11:01:45

理论应该可以,可能我哪里没弄好,
现在省事了,直接去了fifo,直接解析更简单
页: [1]
查看完整版本: verilog如何实现串行接收8位数据转换为16位,下面这样是否....