mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-27 10:55:51 +00:00
Fixed CRLF line endings
This commit is contained in:
parent
08ad5409a2
commit
ad8efeb13f
6 changed files with 563 additions and 563 deletions
|
@ -1,123 +1,123 @@
|
|||
//----------------------------------------------------
|
||||
// A four level, round-robin arbiter. This was
|
||||
// orginally coded by WD Peterson in VHDL.
|
||||
//----------------------------------------------------
|
||||
module arbiter (
|
||||
clk,
|
||||
rst,
|
||||
req3,
|
||||
req2,
|
||||
req1,
|
||||
req0,
|
||||
gnt3,
|
||||
gnt2,
|
||||
gnt1,
|
||||
gnt0
|
||||
);
|
||||
// --------------Port Declaration-----------------------
|
||||
input clk;
|
||||
input rst;
|
||||
input req3;
|
||||
input req2;
|
||||
input req1;
|
||||
input req0;
|
||||
output gnt3;
|
||||
output gnt2;
|
||||
output gnt1;
|
||||
output gnt0;
|
||||
|
||||
//--------------Internal Registers----------------------
|
||||
wire [1:0] gnt ;
|
||||
wire comreq ;
|
||||
wire beg ;
|
||||
wire [1:0] lgnt ;
|
||||
wire lcomreq ;
|
||||
reg lgnt0 ;
|
||||
reg lgnt1 ;
|
||||
reg lgnt2 ;
|
||||
reg lgnt3 ;
|
||||
reg lasmask ;
|
||||
reg lmask0 ;
|
||||
reg lmask1 ;
|
||||
reg ledge ;
|
||||
|
||||
//--------------Code Starts Here-----------------------
|
||||
always @ (posedge clk)
|
||||
if (rst) begin
|
||||
lgnt0 <= 0;
|
||||
lgnt1 <= 0;
|
||||
lgnt2 <= 0;
|
||||
lgnt3 <= 0;
|
||||
end else begin
|
||||
lgnt0 <=(~lcomreq & ~lmask1 & ~lmask0 & ~req3 & ~req2 & ~req1 & req0)
|
||||
| (~lcomreq & ~lmask1 & lmask0 & ~req3 & ~req2 & req0)
|
||||
| (~lcomreq & lmask1 & ~lmask0 & ~req3 & req0)
|
||||
| (~lcomreq & lmask1 & lmask0 & req0 )
|
||||
| ( lcomreq & lgnt0 );
|
||||
lgnt1 <=(~lcomreq & ~lmask1 & ~lmask0 & req1)
|
||||
| (~lcomreq & ~lmask1 & lmask0 & ~req3 & ~req2 & req1 & ~req0)
|
||||
| (~lcomreq & lmask1 & ~lmask0 & ~req3 & req1 & ~req0)
|
||||
| (~lcomreq & lmask1 & lmask0 & req1 & ~req0)
|
||||
| ( lcomreq & lgnt1);
|
||||
lgnt2 <=(~lcomreq & ~lmask1 & ~lmask0 & req2 & ~req1)
|
||||
| (~lcomreq & ~lmask1 & lmask0 & req2)
|
||||
| (~lcomreq & lmask1 & ~lmask0 & ~req3 & req2 & ~req1 & ~req0)
|
||||
| (~lcomreq & lmask1 & lmask0 & req2 & ~req1 & ~req0)
|
||||
| ( lcomreq & lgnt2);
|
||||
lgnt3 <=(~lcomreq & ~lmask1 & ~lmask0 & req3 & ~req2 & ~req1)
|
||||
| (~lcomreq & ~lmask1 & lmask0 & req3 & ~req2)
|
||||
| (~lcomreq & lmask1 & ~lmask0 & req3)
|
||||
| (~lcomreq & lmask1 & lmask0 & req3 & ~req2 & ~req1 & ~req0)
|
||||
| ( lcomreq & lgnt3);
|
||||
end
|
||||
|
||||
//----------------------------------------------------
|
||||
// lasmask state machine.
|
||||
//----------------------------------------------------
|
||||
assign beg = (req3 | req2 | req1 | req0) & ~lcomreq;
|
||||
always @ (posedge clk)
|
||||
begin
|
||||
lasmask <= (beg & ~ledge & ~lasmask);
|
||||
ledge <= (beg & ~ledge & lasmask)
|
||||
| (beg & ledge & ~lasmask);
|
||||
end
|
||||
|
||||
//----------------------------------------------------
|
||||
// comreq logic.
|
||||
//----------------------------------------------------
|
||||
assign lcomreq = ( req3 & lgnt3 )
|
||||
| ( req2 & lgnt2 )
|
||||
| ( req1 & lgnt1 )
|
||||
| ( req0 & lgnt0 );
|
||||
|
||||
//----------------------------------------------------
|
||||
// Encoder logic.
|
||||
//----------------------------------------------------
|
||||
assign lgnt = {(lgnt3 | lgnt2),(lgnt3 | lgnt1)};
|
||||
|
||||
//----------------------------------------------------
|
||||
// lmask register.
|
||||
//----------------------------------------------------
|
||||
always @ (posedge clk )
|
||||
if( rst ) begin
|
||||
lmask1 <= 0;
|
||||
lmask0 <= 0;
|
||||
end else if(lasmask) begin
|
||||
lmask1 <= lgnt[1];
|
||||
lmask0 <= lgnt[0];
|
||||
end else begin
|
||||
lmask1 <= lmask1;
|
||||
lmask0 <= lmask0;
|
||||
end
|
||||
|
||||
assign comreq = lcomreq;
|
||||
assign gnt = lgnt;
|
||||
//----------------------------------------------------
|
||||
// Drive the outputs
|
||||
//----------------------------------------------------
|
||||
assign gnt3 = lgnt3;
|
||||
assign gnt2 = lgnt2;
|
||||
assign gnt1 = lgnt1;
|
||||
assign gnt0 = lgnt0;
|
||||
|
||||
endmodule
|
||||
//----------------------------------------------------
|
||||
// A four level, round-robin arbiter. This was
|
||||
// orginally coded by WD Peterson in VHDL.
|
||||
//----------------------------------------------------
|
||||
module arbiter (
|
||||
clk,
|
||||
rst,
|
||||
req3,
|
||||
req2,
|
||||
req1,
|
||||
req0,
|
||||
gnt3,
|
||||
gnt2,
|
||||
gnt1,
|
||||
gnt0
|
||||
);
|
||||
// --------------Port Declaration-----------------------
|
||||
input clk;
|
||||
input rst;
|
||||
input req3;
|
||||
input req2;
|
||||
input req1;
|
||||
input req0;
|
||||
output gnt3;
|
||||
output gnt2;
|
||||
output gnt1;
|
||||
output gnt0;
|
||||
|
||||
//--------------Internal Registers----------------------
|
||||
wire [1:0] gnt ;
|
||||
wire comreq ;
|
||||
wire beg ;
|
||||
wire [1:0] lgnt ;
|
||||
wire lcomreq ;
|
||||
reg lgnt0 ;
|
||||
reg lgnt1 ;
|
||||
reg lgnt2 ;
|
||||
reg lgnt3 ;
|
||||
reg lasmask ;
|
||||
reg lmask0 ;
|
||||
reg lmask1 ;
|
||||
reg ledge ;
|
||||
|
||||
//--------------Code Starts Here-----------------------
|
||||
always @ (posedge clk)
|
||||
if (rst) begin
|
||||
lgnt0 <= 0;
|
||||
lgnt1 <= 0;
|
||||
lgnt2 <= 0;
|
||||
lgnt3 <= 0;
|
||||
end else begin
|
||||
lgnt0 <=(~lcomreq & ~lmask1 & ~lmask0 & ~req3 & ~req2 & ~req1 & req0)
|
||||
| (~lcomreq & ~lmask1 & lmask0 & ~req3 & ~req2 & req0)
|
||||
| (~lcomreq & lmask1 & ~lmask0 & ~req3 & req0)
|
||||
| (~lcomreq & lmask1 & lmask0 & req0 )
|
||||
| ( lcomreq & lgnt0 );
|
||||
lgnt1 <=(~lcomreq & ~lmask1 & ~lmask0 & req1)
|
||||
| (~lcomreq & ~lmask1 & lmask0 & ~req3 & ~req2 & req1 & ~req0)
|
||||
| (~lcomreq & lmask1 & ~lmask0 & ~req3 & req1 & ~req0)
|
||||
| (~lcomreq & lmask1 & lmask0 & req1 & ~req0)
|
||||
| ( lcomreq & lgnt1);
|
||||
lgnt2 <=(~lcomreq & ~lmask1 & ~lmask0 & req2 & ~req1)
|
||||
| (~lcomreq & ~lmask1 & lmask0 & req2)
|
||||
| (~lcomreq & lmask1 & ~lmask0 & ~req3 & req2 & ~req1 & ~req0)
|
||||
| (~lcomreq & lmask1 & lmask0 & req2 & ~req1 & ~req0)
|
||||
| ( lcomreq & lgnt2);
|
||||
lgnt3 <=(~lcomreq & ~lmask1 & ~lmask0 & req3 & ~req2 & ~req1)
|
||||
| (~lcomreq & ~lmask1 & lmask0 & req3 & ~req2)
|
||||
| (~lcomreq & lmask1 & ~lmask0 & req3)
|
||||
| (~lcomreq & lmask1 & lmask0 & req3 & ~req2 & ~req1 & ~req0)
|
||||
| ( lcomreq & lgnt3);
|
||||
end
|
||||
|
||||
//----------------------------------------------------
|
||||
// lasmask state machine.
|
||||
//----------------------------------------------------
|
||||
assign beg = (req3 | req2 | req1 | req0) & ~lcomreq;
|
||||
always @ (posedge clk)
|
||||
begin
|
||||
lasmask <= (beg & ~ledge & ~lasmask);
|
||||
ledge <= (beg & ~ledge & lasmask)
|
||||
| (beg & ledge & ~lasmask);
|
||||
end
|
||||
|
||||
//----------------------------------------------------
|
||||
// comreq logic.
|
||||
//----------------------------------------------------
|
||||
assign lcomreq = ( req3 & lgnt3 )
|
||||
| ( req2 & lgnt2 )
|
||||
| ( req1 & lgnt1 )
|
||||
| ( req0 & lgnt0 );
|
||||
|
||||
//----------------------------------------------------
|
||||
// Encoder logic.
|
||||
//----------------------------------------------------
|
||||
assign lgnt = {(lgnt3 | lgnt2),(lgnt3 | lgnt1)};
|
||||
|
||||
//----------------------------------------------------
|
||||
// lmask register.
|
||||
//----------------------------------------------------
|
||||
always @ (posedge clk )
|
||||
if( rst ) begin
|
||||
lmask1 <= 0;
|
||||
lmask0 <= 0;
|
||||
end else if(lasmask) begin
|
||||
lmask1 <= lgnt[1];
|
||||
lmask0 <= lgnt[0];
|
||||
end else begin
|
||||
lmask1 <= lmask1;
|
||||
lmask0 <= lmask0;
|
||||
end
|
||||
|
||||
assign comreq = lcomreq;
|
||||
assign gnt = lgnt;
|
||||
//----------------------------------------------------
|
||||
// Drive the outputs
|
||||
//----------------------------------------------------
|
||||
assign gnt3 = lgnt3;
|
||||
assign gnt2 = lgnt2;
|
||||
assign gnt1 = lgnt1;
|
||||
assign gnt0 = lgnt0;
|
||||
|
||||
endmodule
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue