167690693 发表于 2014-4-18 14:32:10

求大神解释一下

这样做事为了什么啊,有什么作用

zhiweiqiang33 发表于 2014-4-18 14:44:00

这是一个典型的移位寄存器代码,主要用在串并转换电路中;比如,通信RS232,I2C实验中,串并转换电路在FPGA设计中很典型;这也是FPGA设计的一种思想;

167690693 发表于 2014-4-18 15:41:17

那他实现的是怎么样的移位,功能是什么

zhiweiqiang33 发表于 2014-4-18 15:50:53

功能就是实现电路的串并转换;从你的代码中来分析;把外部输入进来的一位数据输送到移位寄存器的最低位;当第二个有效时钟沿到来的时候,移位寄存器的最低位在把数据赋值给移位寄存器的次高位;一次类推;移位寄存器的原理这块,建议你把数字电路中的移位寄存器电路逻辑,原理好好看看;

zhiweiqiang33 发表于 2014-4-18 15:55:29

通过你的提问;可见你的数字电路基础不是很好,学习FPGA最基本的基础是掌握数字电路;

167690693 发表于 2014-4-18 15:58:48

谢谢,可是第一位数据是7位的,我不明白

167690693 发表于 2014-4-18 16:00:44

当然这次截图这个是1为的写使能,可是还有好多他们都是多位的数据,求指教

167690693 发表于 2014-4-18 16:01:41

嗯,你这么一说我好像明白了,

167690693 发表于 2014-4-18 16:01:52

3Q,灰常感谢

zhiweiqiang33 发表于 2014-4-18 16:21:37

module register(clk,rstn,din,dou);
input clk;
input rstn;
input din;
output dout;

reg shiftreg;
always @(posedge clk or negedge rstn)
begin
      if(!rstn)
      shiftreg <= 8'd0;
      else                                                
      shiftreg <= din;      
      shiftreg <= shiftreg;
      shiftreg <= shiftreg;
      shiftreg <= shiftreg;
      shiftreg <= shiftreg;
      shiftreg <= shiftreg;
      shiftreg <= shiftreg;
      shiftreg <= shiftreg;
end

wire dout;
assign dout = shiftreg;      


endmodule
页: [1] 2
查看完整版本: 求大神解释一下