URL
https://opencores.org/ocsvn/csa/csa/trunk
[/] [csa/] [trunk/] [quartus10/] [csa_fpga.v] - Diff between revs 38 and 39
Go to most recent revision |
Show entire file |
Details |
Blame |
View Log
Rev 38 |
Rev 39 |
Line 25... |
Line 25... |
, output [ 7:0] seg_d
|
, output [ 7:0] seg_d
|
);
|
);
|
|
|
|
|
wire usbclk = ifclk;
|
wire usbclk = ifclk;
|
wire ep6_havedata = flaga;
|
|
wire ep2_haveroom = flagc;
|
|
wire ep8_havedata = flagb;
|
|
|
|
assign bell = 1'h1;
|
assign bell = 1'h1;
|
|
|
`define CNT_WIDTH 25
|
|
`define STA_WIDTH 4
|
reg [15:0] data_r;
|
|
wire ep2_busy;
|
|
|
|
always @(posedge usbclk)
|
|
if(~ep2_busy)
|
|
data_r<= data_r + 16'h1;
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
// led segement control
|
// led segement control
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
ledseg_cnt ledseg_cnt(
|
ledseg_cnt ledseg_cnt(
|
.clk (usbclk)
|
.clk (usbclk)
|
, .rst (rst)
|
, .rst (rst)
|
, .data (usb_dat_in)
|
, .data (data_r)
|
, .seg (ledseg)
|
, .seg (ledseg)
|
, .segd (seg_d)
|
, .segd (seg_d)
|
);
|
);
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
// usb interface
|
// usb interface
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
assign slcs =1'h0;
|
|
assign pktend=1'h1;
|
|
|
|
`define EP2_W 2'h3
|
|
`define EP6_R 2'h2
|
|
`define EP8_R 2'h1
|
|
`define NO_ACT 2'h0
|
|
|
|
reg [ 1:0] last_action;
|
|
reg [15:0] usb_dat_out;
|
|
reg [15:0] usb_dat_in;
|
|
|
|
always @(posedge usbclk)
|
|
if(ep6_havedata)
|
|
begin
|
|
sloe<=1'h0;
|
|
fifoadr<=2'h2;
|
|
slrd<=1'h0;
|
|
slwr<=1'h1;
|
|
last_action<=`EP6_R;
|
|
end
|
|
else
|
|
if(ep8_havedata)
|
|
begin
|
|
sloe<=1'h0;
|
|
fifoadr<=2'h3;
|
|
slrd<=1'h0;
|
|
slwr<=1'h1;
|
|
last_action<=`EP8_R;
|
|
end
|
|
else
|
|
if(ep2_haveroom)
|
|
begin
|
|
// ouput data
|
|
sloe<=1'h1;
|
|
fifoadr<=2'h0;
|
|
slwr<=1'h0;
|
|
slrd<=1'h1;
|
|
last_action<=`EP2_W;
|
|
end
|
|
else
|
|
begin
|
|
sloe<=1'h1;
|
|
fifoadr<=2'h0;
|
|
slwr<=1'h1;
|
|
slrd<=1'h1;
|
|
last_action<=`NO_ACT;
|
|
end
|
|
|
|
|
|
always @(posedge usbclk)
|
usb_cnt usb_cnt(
|
if(last_action==`EP8_R )
|
.clk (usbclk)
|
usb_dat_in<=fd;
|
, .pktend (pktend)
|
|
, .sloe (sloe)
|
|
, .slwr (slwr)
|
|
, .slcs (slcs)
|
|
, .slrd (slrd)
|
|
, .fifoadr (fifoadr)
|
|
, .fd (fd)
|
|
, .ep2_t (flagc)
|
|
, .ep2_busy(ep2_busy)
|
|
, .ep2_wr (data_r[0])
|
|
, .ep2_data(data_r)
|
|
, .ep6_t (flaga)
|
|
, .ep6_f ()
|
|
, .ep6_data()
|
|
, .ep8_t (flagb)
|
|
, .ep8_f ()
|
|
, .ep8_data()
|
|
);
|
|
|
assign fd=(sloe)?usb_dat_out:16'hzzzz;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
// csa decrypt module
|
// csa decrypt module
|
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
decrypt csa_decrypt(
|
decrypt csa_decrypt(
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.