题解 | #根据RTL图编写Verilog程序#

根据RTL图编写Verilog程序

http://www.nowcoder.com/practice/41a06522d8b242808c31a152bf948b5e

`timescale 1ns/1ns

module RTL(
	input clk,
	input rst_n,
	input data_in,
	output reg data_out
	);
reg    data_in_reg;
wire   data_in_pos;
always @(posedge clk or negedge rst_n) 
begin
    if(!rst_n)
        begin
            data_in_reg <= 0;
        end
    else 
        begin
            data_in_reg <= data_in;
        end
end
assign data_in_pos = !data_in_reg && data_in;

always @(posedge clk or negedge rst_n) 
begin
    if(!rst_n)
        begin
            data_out <= 0;
        end
    else 
        begin
            data_out <= data_in_pos;
        end
end

endmodule

时序图流程是,给输入data_in 打一拍得到data_in_reg。然后用wire型得到data_in的上升沿。这是个组合逻辑。所以必须使用assign赋值来写。最后将data_in_pos打一拍得到输出data_out。

全部评论

相关推荐

神哥不得了:首先我就是在成都,成都的互联网格外的卷,如果是凭现在的简历的话很难找到大厂,建议再添加一个高质量的项目上去,另外专业技能的话最好是超过每一条的一半
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务