u280_shell_rhdl/
reader.rs1use rhdl::prelude::*;
4
5use crate::axi::AXI_RESP_OKAY;
6
7#[derive(Clone, Copy, Debug, Default, Digital, Eq, PartialEq)]
9pub enum ReaderState {
10 #[default]
12 Idle,
13 Address,
15 Response,
17 Hold,
19}
20
21#[derive(Clone, Copy, Debug, Digital, Eq, PartialEq)]
23pub struct InputJob {
24 pub data: [b8; 64],
26 pub job_id: b32,
28}
29
30impl Default for InputJob {
31 fn default() -> Self {
32 Self {
33 data: [b8(0); 64],
34 job_id: b32(0),
35 }
36 }
37}
38
39#[kernel]
41pub fn input_job_address_kernel(base: b64, job_id: b32) -> b64 {
42 let wide_job: b64 = job_id.resize();
43 base + (wide_job << 6)
44}
45
46#[kernel]
48pub fn input_response_is_canonical_kernel(rid: b1, rresp: b2, rlast: bool) -> bool {
49 rid == b1(0) && rresp == AXI_RESP_OKAY && rlast
50}