本来只想做一下序列信号发生器的手撕代码,但是综合之后看了一下生成的原理图,觉得无法理解,就研究了一下。
序列信号发生器很简单,我用移位实现的,代码如下
module xuliexinhao(
input sys_clk, //时钟
input sys_rst_n, //复位,低有效
input [9:0] in, //待输出序列
output reg out //输出
);
reg [9:0] data;
always @(posedge sys_clk,negedge sys_rst_n) begin
if (!sys_rst_n) begin
out <= 0;
data <= in;
end
else begin
out <= data[9];
data <= {data[8:0],data[9]};
end
end
endmodule
这个没有什么好说的很简单,再仿真例化一下就行了,就不贴代码了。
但是这个生成的电路图是这样的
难点在于我不理解异步置位,即data寄存器的PRE引脚,对D触发器的异步置位和异步复位讲解的文章不多,所以就写一下。在这里要知道D触发器特性,CLR是异步复位,PRE是异步置位&