集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2216|回复: 6

简单 串并转换 程序求助

[复制链接]
fly322 发表于 2011-8-12 11:52:06 | 显示全部楼层 |阅读模式
module se_pa(rst,clk,data_in,data_out
    );
input clk,rst;
input data_in;
output[3:0] data_out;

reg[3:0] data_out;
reg[3:0] para_out;
reg[1:0] count;

always@(posedge clk)
begin
        if(rst)
                begin
                        count <= 2'b00;
                end
        else
                begin
                        count <= count + 2'b01;
                end
end

always@(posedge clk)
begin
        if(rst)
                begin
                        para_out <= 4'b0000;
                end
        else
                begin
                        para_out <= {para_out[2:0],data_in};
                end
end
               
always@(posedge clk)
begin
        if(rst)
                begin
                        data_out <= 0;
                end
        else if(count == 2'b11)
                begin                       
                        data_out <= para_out;
                end
end
endmodule




module t;

        // Inputs
        reg rst;
        reg clk;
        reg data_in;

        // Outputs
        wire [3:0] data_out;

        // Instantiate the Unit Under Test (UUT)
        se_pa uut (
                .rst(rst),
                .clk(clk),
                .data_in(data_in),
                .data_out(data_out)
        );

        initial begin
                // Initialize Inputs
                rst = 1;
                clk = 0;
                data_in = 0;

                // Wait 100 ns for global reset to finish
                #10 rst = 0;
                #10 data_in = 1;
                #10 data_in = 0;
                #10 data_in = 1;
                #10 data_in = 1;
                #10 data_in = 0;
                #10 data_in = 1;
                #10 data_in = 0;
                #10 data_in = 1;
                #10 data_in = 1;
                #10 data_in = 1;
                #10 data_in = 0;
                // Add stimulus here

        end
always #50 clk = ~clk;      
endmodule


输出不知道为什么不对 请高手 看看程序 指点一二 谢谢了
wyatwl 发表于 2011-8-15 16:14:34 | 显示全部楼层
输出是什么?怎么不对了?能说详细点吗?
liujilei311 发表于 2011-8-16 08:02:03 | 显示全部楼层
对verilog不太熟悉,学习一下!!!!!!!!
beyond5165897 发表于 2011-8-17 21:39:50 | 显示全部楼层
测试代码部分的最后,always #50 clk = ~clk;  #50改成#5,估计是你手误,哪有那么大周期的时钟,呵呵,很明显与输入数据周期不一致嘛
 楼主| fly322 发表于 2011-8-22 15:38:34 | 显示全部楼层
回复 4# beyond5165897


    多谢高手指点...问题解决
liujilei311 发表于 2011-8-23 07:53:36 | 显示全部楼层
恭喜恭喜啊,呵呵!!!!!!!!!!!
hhq520189 发表于 2011-8-23 09:55:54 | 显示全部楼层
就是,仿真的周期也太大了吧,连赋了几个值,周期还没变化一次
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-29 09:17 , Processed in 0.147906 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表