原创 fpga学习日记14,串并转换与锁存器

2013-8-28 09:35 3055 16 16 分类: FPGA/CPLD 文集: 数电,FPGA学习

(注:如果本文有代码 则均搜索于网络或本人编写仅供学习之用)

移位寄存器和锁存器在开发中是经常遇到的比如拨码开关输入 大型LED驱动等

 

在早期使用8051的时候如果IO不够用那么我们就可以

用锁存器 缓冲器   并串转换 或者串并转换来扩展IO控制

比如 常用的

74HC273    8 位数据/地址锁存器

74HC244    3态8位缓冲器,一般用作总线驱动器。74LS244没有锁存的功能。

74HC165    并口输入串口输出

74HC595 串口输入并行输入

正是这些扩展器件的存在让mcu的控制能力一下提升起来了

这里我们先实现最基本并串转换和锁存器 

1,并口输入转串行输出 8输入

基本思想循环8次 每次把并口8输入的一位   赋值给8位寄存器的相应位

01 always @(posedge sys_clk or negedge sys_rst_nbegin 
02         if (sys_rst_n ==1'b0
03             srial_data_out <= 1'b0;
04         else if (shift_en == 1'b1begin
05               for (i = 1'b0;i<8;i = i +1'b1)
06                   srial_data_out <= data_in[i];
07         end
08         else 
09            srial_data_out <= 1'b0;
10           
11 end

串行输入转并口

其实就是将一个寄存器的值一位一位赋值给并口的相应IO

 

01 always @(posedge sys_clk or negedge sys_rst_n) begin
02         if (sys_rst_n ==1'b0)
03         begin
04             data_out <= 8'b0;
05         end
06         else if (shift_en == 1'b1) begin
07               for (i = 1'b0;i<WIDTH;i = i +1'b1)
08                   data_out[i] <= srial_data_in;
09         end
10         else
11            data_out <= data_out;
12           
13 end

 

锁存器就是获取输入并锁定即使输入变化可不影响输出

Always @ (*) begin
   if  (oe_n) // 输出高阻
      data_out = 8'hzz;
  else begin
      if (le) // 数据透明输出
        data_out = data_in;
    end
end endmodule

1

文章评论0条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /2 下一条