哪位大神有FPGA的RS编码器的源程序呀

2019-07-15 23:55发布

基于FPGA的RS(15,11)编码器的实现,类似程序也行啊,。。。急需呀。。。给个呗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
雨来时想你
1楼-- · 2019-07-16 04:46
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;

ENTITY D_FF IS
        PORT
        (       
                D,CP:IN std_logic;--D为数据输入,CP为时钟,上升沿触发
                Rd,Sd:IN std_logic; --Rd为异步复位信号,Sd为异步置位信号
                Q,Qn:OUT std_logic --输出信号,是两个互补输出
        );
END D_FF;

ARCHITECTURE behave OF D_FF IS
BEGIN
        PROCESS(CP,Rd,Sd)
        BEGIN
                IF (Rd='0' AND Sd='1') THEN--功能表第一条
                        Q<='0';
                        Qn<='1';
                ELSIF (Rd='1' AND Sd='0') THEN--功能表第二条
                        Q<='1';
                        Qn<='0';
                ELSIF (Rd='0' AND Sd='0') THEN--功能表没有这条,要注意
                        Q<='X';
                        Qn<='X';
                ELSE                                                --功能表第四和第五条,即Rd='1' AND Sd='1'
                        IF (rising_edge(CP)) THEN
                                Q<=D;
                                Qn<=NOT D;
                        END IF;
                END IF;
        END PROCESS;
END behave;



这是个D触发器
雨来时想你
2楼-- · 2019-07-16 06:28
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;

ENTITY D_FF IS
        PORT
        (       
                D,CP:IN std_logic;--D为数据输入,CP为时钟,上升沿触发
                Rd,Sd:IN std_logic; --Rd为异步复位信号,Sd为异步置位信号
                Q,Qn:OUT std_logic --输出信号,是两个互补输出
        );
END D_FF;

ARCHITECTURE behave OF D_FF IS
BEGIN
        PROCESS(CP,Rd,Sd)
        BEGIN
                IF (Rd='0' AND Sd='1') THEN--功能表第一条
                        Q<='0';
                        Qn<='1';
                ELSIF (Rd='1' AND Sd='0') THEN--功能表第二条
                        Q<='1';
                        Qn<='0';
                ELSIF (Rd='0' AND Sd='0') THEN--功能表没有这条,要注意
                        Q<='X';
                        Qn<='X';
                ELSE                                                --功能表第四和第五条,即Rd='1' AND Sd='1'
                        IF (rising_edge(CP)) THEN
                                Q<=D;
                                Qn<=NOT D;
                        END IF;
                END IF;
        END PROCESS;
END behave;
雨来时想你
3楼-- · 2019-07-16 09:27
我有D触发器的源程序
qaz123456321
4楼-- · 2019-07-16 15:26
module frs(clk,rst_n,x,y
    );
         input    clk;
         
         input    rst_n;
         
         input   [3:0] x;
         
         output    [3:0] y;
         

parameter         idle=2'b00;
parameter              second=2'b01;
parameter         third=2'b10;
parameter                   forth=2'b11;
         
reg [1:0] state;

reg  [3:0] D1;
  // reg  [3:0]  x_in;
//reg [3:0] cnt;

always@(posedge clk  or negedge rst_n)
                                       begin
if(!rst_n)
begin
cnt<=4'b0000;
D1<=4'b1101;
state<=idle;
end
      else

                                 
case(state)

idle:
begin
D1[0]<=x[3]^D1[3];
D1[1]<=D1[0];
D1[2]<=D1[1]^x[3];
D1[3]<=D1[2]^x[3];
state<=second;
end



second:

begin
D1[0]<=x[2]^D1[3];
D1[1]<=D1[0];
D1[2]<=D1[1]^x[2];
D1[3]<=D1[2]^x[2];
state<=third;
end



third:
begin
D1[0]<=x[1]^D1[3];
D1[1]<=D1[0];
D1[2]<=D1[1]^x[1];
D1[3]<=D1[2]^x[1];
state<=forth;
end


forth:
begin
D1[0]<=x[0]^D1[3];
D1[1]<=D1[0];
D1[2]<=D1[1]^x[0];
D1[3]<=D1[2]^x[0];
end
default:state<=idle;





endcase


                                       end

         
        assign y=D1;
         
         


endmodule  


qaz123456321
5楼-- · 2019-07-16 21:10
 精彩回答 2  元偷偷看……

一周热门 更多>